【发布时间】:2011-04-10 04:18:21
【问题描述】:
我正在尝试使用不可见的 WebBrowser 控件来打印一个非常简单的 HTML 文档。我们的应用程序要求我们能够以这种方式打印多个文档,并且它们都可以发送到不同的打印机。不幸的是,我在使输出到正确的打印机方面并不是很成功。
它现在的工作方式是在打印文档之前,应用程序确定接收它的打印机,并相应地设置默认打印机。为此,它使用从 WinSpool.drv 导入的 SetDefaultPrinter()。如果我在调试模式下单步执行代码,我可以清楚地看到默认打印机发生了变化(并且这种变化反映在控制面板 UI 中),但 WebBrowser 仍然坚持使用原来的默认打印机。
据我所见,MSDN 文档并没有真正为这种情况提供解决方案。对于如何以编程方式完成此任务,我将不胜感激。
【问题讨论】:
-
出于好奇:您接受了我的回答,但我提出了大约 6 条不同的建议。您选择了哪种解决方案:哪一种适合您?
-
@ChrisW:很抱歉不清楚这一点。使用 ActiveX API 最终解决了这个问题。基本上,我抓取 WebBrowser.ActiveXInstance 对象,为 PrintTemplateTeardown 事件注册一个处理程序,并在考虑打印页面之前等待它发生。有趣的是,这解决了我们使用托管 WebBrowser 包装控件时遇到的所有打印目标问题。谢谢你的建议!
标签: c# winforms printing webbrowser-control