繁体   English   中英

以编程方式更改WinForms WebBrowser控件的目标打印机

[英]Programmatically changing the destination printer for a WinForms WebBrowser control

我正在尝试使用不可见的WebBrowser控件来打印一个非常简单的HTML文档。 我们的应用程序要求我们能够以这种方式打印多个文档,并且它们都可以发送到不同的打印机。 不幸的是,我没有非常成功地使输出到正确的打印机。

它现在的工作方式是在打印文档之前,应用程序确定要接收哪个打印机,并相应地设置默认打印机。 为此,它使用从WinSpool.drv导入的SetDefaultPrinter()。 如果我在调试模式下执行代码,我可以清楚地看到默认打印机更改(并且此更改反映在控制面板UI中),但WebBrowser仍然坚持使用原始默认打印机。

从我所看到的MSDN文档中,并没有真正为这种情况提供解决方案。 我非常感谢有关如何以编程方式完成此操作的一些输入。

鉴于你所说的,也许,如果你重新启动其中包含Web浏览器控件(或者 Web浏览器控件的过程),您可以更改默认打印机之后的过程? 例如,这就是我在这里看到的那种事情


我想可以分出一个执行实际打印的后台进程,但我真的希望有一个更简单的解决方案。

分叉我第一次想到一个可能最简单的解决方案。

其他一些替代方案如下。

1)。 Web浏览器控件正在包装的IE通过ActiveX公开API。 其中一个/那些API可能允许您指定目标打印机。

2)。 一些可执行文件(我不知道IE)在注册表中有printto条目。 例如,Acrobat Reader有一个条目,其值如下:

""C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe""  /t "%1" "%2" "%3" "%4"

这用于指定命令行的语法,您可以使用该语法打印并指定(非默认)打印机。 您还可以使用Google进行printto ,例如参见ShellExecute中的PrintTo命令

3)。 我已经为我自己的.NET实现了一个HTML控件 ,它不依赖于IE。 你说你的HTML(和我设想的CSS)很简单,所以也许我可以开箱即用,或者只需要一些额外的开发工作。 我不支持打印,但打印很容易让用户控件实现。 让我为你实现这个将花费你几百,但谁知道,也许它是值得的。 这将是一个非常轻量级的解决方案,并且可能得到很好的支持。 如果你想进一步讨论,你可以给我发电子邮件。

4)。 您可能还会发现其他类似于我的控件,或多或少知名/昂贵; 或其他应用程序,例如OpenOffice等。

5)。 您可以考虑将HTML(某种程度上)转换为另一种格式(例如PDF),您有一个应用程序可以为您提供更好的打印支持。

我遇到了完全相同的问题,并使用此控件而不是标准的.NET WebBrowser来解决它。

这适用于.NET 3.5,如果不是之前的话

this.webBrowser1.ShowPrintDialog();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM