I would like to find or write an Internet Explorer ActiveX control that will allow me to print a web page to a specific printer without a dialog box. The problem that I am having is that this particular page needs to print to a label printer with very specific orientation properties. Can anyone get me started? Thanks.
Why the requirement that you print without a dialog box? You can bring up the dialog box automatically with Javascript, and that way the user can choose the printer & options; otherwise you will have to hardcode the printer name. Ex:
<body onload="javascript:window.print();">
Perhaps you should probably consider outputting to something like a PDF or Word Document that is designed for that kind of specific layout - the HTML may render differently on various IE versions, and you probably don't want something as specific as labels to be messed up.
I have done it and its easy but I just can't seem to get my ActiveX control to register...
When I register is manually it works, but when I run it by itself, it fails.
ALl you need to do is create a form that which has got a WebBrowser control on it. Pass the page you want to view to the NavigateURL property and call the Navigate method.
After the navigation has been completed, you can call the print method. Since you a printing to a label printer, just remember to set the page margings and remove the header and footer and set it back again when the page has finished printing.
(I did my work in .Net)
If you hook in to IE windows messages and wait for the print dialog to activate, using GetWindowText() to find the window with the "Print" title, you can send messages explicitly to the various controls to set the settings and click the "Print" button. This is much easier to do in IE7 than IE8, but with the help of SPY++ to find control IDs for each of the settings you can do it.