HTML-Dokument aus einer Anwendung drucken
Die Verwendung des Internet Explorer 5 macht diese Aufgabe ziemlich einfach, setzt allerdings etwas Arbeit voraus. Angenommen du willst, dass dein Programm HTML-Dokumente ausdrucken kann – entweder direkt aus dem Internet oder aus einer Datei. Das Hauptproblem dabei ist, dass die TWebBrowser-Komponente keine Print-Methode anbietet. Wenn du jemals einen Blick in de MSHTML.pas geworfen hast, wirst du bemerkt haben, dass IHTMLWindow3 eine Print-Methode besitzt, die wir aufrufen können – der einzige Trick ist, ein IHTML-Window3-Interface von TWebBrowser zu erhalten. Das kann durch die Verwendung von TWebBrowser (muss nicht sichtbar sein) geschehen, indem WebBrowser.Navigate aufgerufen wird, um zu der zu druckenden Seite zu gelangen. Das Drucken wird im NavigateComplete-Ereignis erledigt.
procedure TForm1.WebBrowser_V1NavigateComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var HTMLDoc: IHTMLDocument2; HTMLWnd: IHTMLWindow2; HTMLWindow3: IHTMLWindow3; begin HTMLDoc := (Sender as TWebBrowser).Document as IHTMLDocument2; if HTMLDoc = nil then raise Exception.Create('Couldn''t convert the WebBrowser to an IHTMLDocument2'); HTMLWnd := HTMLDoc.parentWindow; HTMLWindow3 := HTMLWnd as IHTMLWindow3; // Finally, we get to the print method HTMLWindow3.print; end;