Mar*_*all 5 c# printing webbrowser-control winforms
我正在尝试使用不可见的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"
Run Code Online (Sandbox Code Playgroud)
它用于指定可用于打印和指定(非默认)打印机的命令行语法。您还可以通过 Google 查找printto
,例如查看ShellExecute 中的 PrintTo 命令。
3)。我已经为自己的.NET 实现了一个HTML 控件,它不依赖于IE。你说你的 HTML(和我认为的 CSS)很简单,所以也许我可以渲染它,要么开箱即用,要么只需要一点额外的开发工作。我不支持打印,但是用户控件实现打印非常容易。让我为您实现这一点将花费您数百美元,但谁知道呢,也许这对您来说是值得的。这将是一个相当轻量级的解决方案,并且可能得到很好的支持。如果您想进一步讨论,可以给我发电子邮件。
4). 您可能还会发现其他控件,与我的类似,或多或少有名/昂贵;或其他应用程序,例如 OpenOffice 等。
5)。您可以考虑将 HTML(以某种方式)转换为另一种格式(例如 PDF),您有一个应用程序可以为您提供更好的打印支持。
归档时间: |
|
查看次数: |
3647 次 |
最近记录: |