我想使用C#打印网页而不显示打印机对话框。我想提供URL,它应该按显示的那样打印页面。目前,我的代码正在打印HTML代码。请指导我这样做。
答案 0 :(得分:0)
这听起来比实际棘手(很可能)。我的理解是,您需要某种引擎才能翻译所有网页的样式,布局和绘画。然后就渲染最终结果。
请牢记这一点,马上就会弹出一件事:浏览器自动化,尤其是-硒可以完成这项工作。由于您未显示打印机对话框而询问,因此可以在headless mode中运行
不过,我认为您最好的选择是通过加载“打印预览”页面
js.ExecuteScript("setTimeout(window.print, 5);");
(reference)
然后carefully locate the print button和等待的处理程序。
PS。我不认为这是目前最干净,最简单的解决方案,但这是我目前唯一想到的解决方案。
答案 1 :(得分:0)
我通过这些行成功地做到了这一点。但是问题在于,这只会打印到默认打印机。我知道要设置默认打印机,但是我正在寻找通过打印机名称传递解决方案的解决方案,它无需先将其设置为默认打印机即可打印网页。
ie.Navigate(URL, ref missing, ref missing, ref missing, ref missing);
while (!documentLoaded && ie.QueryStatusWB(OLECMDID.OLECMDID_PRINT) != OLECMDF.OLECMDF_ENABLED)
ie.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref missing, ref missing);