我想使用C#打印网页而不显示打印机对话框。我想提供网址,它应该打印显示的页面。目前我的代码是打印HTML代码。请指导我这样做。
这听起来比它更棘手(最有可能)。我的理解是你需要某种引擎来翻译所有网页的样式,布局和绘画。然后在那之后呈现最终结果。牢记这一点,立即出现一些事情:浏览器自动化,特别是 - selenium可以完成这项工作。既然你没有显示打印机对话框就问过,你可以在headless mode中运行。我认为最好的办法是通过js.ExecuteScript("setTimeout(window.print, 5);");
(reference)和carefully locate the print button以及等待处理程序)加载打印预览页面。
PS。我不相信这是最干净,最简单的解决方案,但它是我目前唯一能想到的解决方案。
我通过这些方法成功地做到了这一点但问题是这只打印到默认打印机。我知道要设置默认打印机,但我正在寻找解决方案,我传递打印机名称并打印网页而不先将其设置为默认打印机。
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);