如何在C#或JavaScript中打印HTML文档而无需用户确认?

3
我想发送打印作业到打印机,而不需要用户在打印确认对话框窗口上点击“确定”。无论是C#代码后台还是JavaScript都可以,以哪种方式更好为准。
所以...我知道可以打印HTML文档,但是是否可以不需要用户点击确定就打印呢?
我提出这个问题的原因是打印作业会打印一个文档100次,并动态插入表单值。(想象一下,如果您要向100个人打印感谢卡并且不想自己更改100次姓名)。如果用户必须确认每个文档的打印作业,那么完成一个打印作业将需要很长时间。现在想象一下,如果一天内有100个打印作业!这意味着一个人要花费数小时来点击“确定”10000次。
注意:只有一个人需要使用打印表格,因此如果降低浏览器中的安全问题就可以解决。我只需要一种方法允许所有100个打印作业通过,而无需每个作业都进行确认(即使每100个作业只需要1次确认也可以,但文档仍然必须每次更改)。

使用什么软件(例如哪个浏览器或哪个HTML编辑器)有关系吗? - ChrisW
4个回答

3

从任何主流浏览器中,我相信你无法直接实现。

您可以创建一个包含WebBrowser控件的WinForm应用程序,在那里打印而无需用户确认(如果我记得正确,该对象有一个Print方法)。


感谢上帝,浏览器不允许这样做!想象一下,如果广告公司得知此事,你的打印机将会喷出多少垃圾... - Ruben
我完全同意。只是如果有需要的话,能够关闭它会更好一些... - Matt

3
我发现这个问题当我在寻找解决方案时,我会将它发布在这里至少作为我自己的参考。在Firefox中可以很简单地完成这个问题(测试版本为3.5):
  • 在Firefox地址栏中输入about:config
  • 右键单击第一个设置,选择新建 -> 布尔值 -> 添加"print.always_print_silent" -> 值为"true"
  • 重新启动Firefox
现在,如果你从javascript调用window.print(),页面将被打印出来而无需事先确认。
来源:http://forums.mozillazine.org/viewtopic.php?f=40&t=48336&start=0

非常感谢这个技巧,它非常适合我正在处理的项目! - Zed-K

1
如果您正在使用Internet Explorer 5.5或更高版本,则应该可以正常工作:
function printit(){ 
    var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; 
    document.body.insertAdjacentHTML('beforeEnd', WebBrowser); WebBrowser1.ExecWB(6, -1); 
    WebBrowser1.outerHTML = ""; 
}

基本上和Austin的建议做的事情是一样的。OBJECT引用是WebBrowser控件。InsertAdjacentHTML命令获取页面内容。ExecWB(6, -1)是执行打印命令而不提示的方法。 - Robert Harvey

1
为什么不创建一个包含所有100张卡片的单页面,并打印出来,只需确保有适当的分页即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接