我试图使用一个不可见的WebBrowser控件来打印一个非常简单的HTML文档。我们的应用程序要求我们能够以这种方式打印多个文档,并且它们都可以发送到不同的打印机。不幸的是,我并没有很成功地将输出转移到正确的打印机上。以编程方式更改WinForms WebBrowser控件的目标打印机
它现在的工作方式是在打印文档之前,应用程序确定要接收它的打印机,并相应地设置默认打印机。为此,它使用从WinSpool.drv导入的SetDefaultPrinter()。如果我在调试模式下执行代码,我可以清楚地看到默认打印机发生变化(并且此更改反映在控制面板用户界面中),但WebBrowser仍坚持使用原始默认打印机。
从我看到的MSDN文档中,并没有真正为这种情况提供解决方案。我将非常感谢一些关于如何以编程方式完成此任务的输入。
出于好奇:你接受了我的答案,但我做了大约6不同的建议。你选择了哪种解决方案:哪一个适合你? – ChrisW 2010-09-13 12:26:42
@ChrisW:抱歉,不清楚这一点。使用ActiveX APIs最终解决了这个问题。基本上,我抓住WebBrowser.ActiveXInstance对象,为PrintTemplateTeardown事件注册一个处理程序,并等待它发生,然后再考虑打印页面。有趣的是,这解决了我们使用托管WebBrowser包装控件的所有打印目标问题。感谢您的建议! – 2010-09-15 15:26:53