在不显示“打印对话框”的情况下打印网页

时间:2019-01-24 20:15:13

标签: c# printing webpage system.printing

我想使用C#打印网页而不显示打印机对话框。我想提供URL,它应该按显示的那样打印页面。目前,我的代码正在打印HTML代码。请指导我这样做。

2 个答案:

答案 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);
相关问题