For forums, blogs and more please visit our
Developer Tools Community.
By: Corbin Dunn
Abstract: Printing HTML documents by automating Internet Explorer with TWebBrowser
Developing Internet Applications
By Corbin Dunn
Delphi Developer Support
Question: How do I print an HTML document from inside an application? Or, how do I print from a TWebBrowser control?
Answer: Using Internet Explorer 5 makes this very simple to do, but involves a little work to get it done. Let's say that you want to allow your program to print HTML documents - either from the web directly, or from a file. The main problem programmers encounter is that TWebBrowser does not have a Print method. If you have ever looked inside of MSHTML.pas you will notice that IHTMLWindow3 has a print method that we can call - the only trick is in acquiring an IHTMLWindow3 interface from a TWebBrowser. This can be down by using TWebBrowser component (it doesn't have to be visible), calling WebBrowser.Navigate to go the location you want to print, and then in the NavigateComplete event doing the print:
procedure TForm1.WebBrowser_V1NavigateComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
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
Could not retrieve comments. Please try again later.
Download Delphi 10 now!
Webinars on demand!
More social media choices:
Delphi on Google+
@RADTools on Twitter
Server Response from: ETNASC03