Interessant

Sla een webpagina op als HTML of MHT met Delphi

Sla een webpagina op als HTML of MHT met Delphi

Wanneer u met Delphi werkt, kunt u met de TWebBrowser-component een aangepaste webbrowser-applicatie maken of internet-, bestands- en netwerkbrowsen, documentweergave en gegevensdownloadmogelijkheden aan uw applicaties toevoegen.

Een webpagina opslaan vanuit TWebBrowser

Wanneer u Internet Explorer gebruikt, mag u de HTML-broncode van een pagina bekijken en die pagina opslaan als een bestand op uw lokale schijf. Als u een pagina bekijkt die u wilt behouden, gaat u naar het menu-item Bestand / Opslaan als ... In het dialoogvenster dat wordt geopend, hebt u verschillende bestandstypen aangeboden. Het opslaan van de pagina als een ander bestandstype heeft invloed op de manier waarop de pagina wordt opgeslagen.

De TWebBrowser-component (op de "Internet" -pagina van het componentenpalet) biedt toegang tot de webbrowserfunctionaliteit vanuit uw Delphi-toepassingen. Over het algemeen wilt u het opslaan van een webpagina die in een WebBrowser wordt weergegeven als een HTML-bestand op een schijf inschakelen.

Een webpagina opslaan als onbewerkte HTML

Als u alleen een webpagina als onbewerkte HTML wilt opslaan, selecteert u "Webpagina, alleen HTML (* .htm, * .html)". Het slaat eenvoudig de bron-HTML van de huidige pagina intact op uw schijf op. Met deze actie worden de afbeeldingen van de pagina of andere bestanden die op de pagina worden gebruikt, NIET opgeslagen, wat betekent dat als u het bestand terug laadt vanaf de lokale schijf, u verbroken afbeeldingskoppelingen ziet.

U kunt als volgt een webpagina opslaan als onbewerkte HTML met Delphi-code:

toepassingen ActiveX;

procedure WB_SaveAs_HTML (WB: TWebBrowser; const Bestandsnaam : draad) ;
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
beginnen
  als niet Toegewezen (WB.Document) vervolgens
  beginnen
ShowMessage ('Document niet geladen!');
Uitgang;
  einde;
PersistStream: = WB.Document net zo IPersistStreamInit;
FileStream: = TFileStream.Create (Bestandsnaam, fmCreate);
  proberen
Stream: = TStreamAdapter.Create (FileStream, soReference) als IStream;
indien mislukt (PersistStream.Save (Stream, True)) dan ShowMessage ('SaveAs HTML fail!');
  Tenslotte
FileStream.Free;
  einde;
einde; (* WB_SaveAs_HTML *)

Gebruik monster:

// eerst navigeren
WebBrowser1.Navigate ('// delphi.about.com');
// dan opslaan
WB_SaveAs_HTML (WebBrowser1, 'c: WebBrowser1.html');

Notes

  • De IPersistStreamInit- en IStream-interfaces worden binnen de ActiveX-eenheid gedeclareerd.
  • De webpagina wordt opgeslagen als onbewerkte HTML in het bestand WebBrowser1.html in de hoofdmap van de C-schijf.

MHT: Webarchief, één bestand

Wanneer u een webpagina opslaat als "Webarchief, enkel bestand (* .mht)", wordt het webdocument opgeslagen in de indeling Multipurpose Internet Mail Extension HTML (MHTML) met een .mht-bestandsextensie. Alle relatieve links op de webpagina worden opnieuw toegewezen en de ingesloten inhoud wordt opgenomen in het .mht-bestand, in plaats van te worden opgeslagen in een afzonderlijke map (zoals het geval is bij "Webpagina, compleet (* .htm, * .html)" ).

Met MHTML kunt u webpagina's en andere HTML-documenten verzenden en ontvangen met behulp van e-mailprogramma's zoals Microsoft Outlook en Microsoft Outlook Express; of zelfs uw aangepaste Delphi-oplossingen voor e-mailverzending. Met MHTML kunt u afbeeldingen rechtstreeks in de hoofdtekst van uw e-mailberichten insluiten in plaats van ze aan het bericht toe te voegen.

U kunt als volgt een webpagina opslaan als een enkel bestand (MHT-indeling) met Delphi-code:

toepassingen CDO_TLB, ADODB_TLB;

procedure WB_SaveAs_MHT (WB: TWebBrowser; Bestandsnaam: TFileName);
var
Msg: IMessage;
Conf: IConfiguration;
Stream: _Stream;
URL: breedste rij;
beginnen
  als niet Toegewezen (WB.Document) vervolgens Uitgang;
URL: = WB.LocationURL;
Msg: = CoMessage.Create;
Conf: = CoConfiguration.Create;
  proberen
Msg.Configuration: = Conf;
Msg.CreateMHTMLBody (URL, cdoSuppressAll, ",");
Stream: = Msg.GetStream;
Stream.SaveToFile (Bestandsnaam, adSaveCreateOverWrite);
  Tenslotte
Msg: = nul;
Conf: = nul;
Stroom: = nul;
  einde;
einde; (* WB_SaveAs_MHT *)

Voorbeeld gebruik:

// eerst navigeren
WebBrowser1.Navigate ('// delphi.about.com');
// dan opslaan
WB_SaveAs_MHT (WebBrowser1, 'c: WebBrowser1.mht');

Notitie

  • De klasse _Stream is gedefinieerd in de ADODB_TLB-eenheid die u waarschijnlijk al hebt gemaakt. De IMessage- en IConfiguration-interfacecode van de cdosys.dll-bibliotheek. CDO staat voor Collaboration Data Objects - objectbibliotheken die zijn ontworpen om SMTP-berichten in te schakelen.

De CDO_TLB is een automatisch gegenereerde eenheid van Delphi. Om het te maken, selecteert u in het hoofdmenu "Import Type Library", selecteert u "C: WINDOWS system32 cdosys.dll" en klikt u op de knop "Create unit".

Geen TWebBrowser

U kunt de procedure WB_SaveAs_MHT herschrijven om een ​​URL-tekenreeks (niet TWebBrowser) te accepteren om een ​​webpagina rechtstreeks te kunnen opslaan - u hoeft de component WebBrowser niet te gebruiken. De URL van WebBrowser wordt opgehaald met behulp van de eigenschap WB.LocationURL.


Bekijk de video: Biological data. Wikipedia audio article (Augustus 2021).