是否可以有一个绕过打印对话框的打印选项?
我正在一个封闭的系统上工作,希望能够预先定义打印对话框设置;单击按钮后立即处理打印。
根据我所读到的内容,每个浏览器的执行方式都不同。例如,IE 将使用 ActiveX。 Chrome / Firefox 需要扩展。基于此,看来我必须用 C++ 编写一个应用程序,它可以处理浏览器传递的参数,以便以正确的格式自动打印(对于标签)。然后我必须将其重写为 Chrome / Firefox 的扩展。最终结果是我们封闭系统上的用户必须根据他们使用的浏览器下载/安装这些功能。
我希望有另一种方法可以解决此问题,但此任务很可能违反浏览器安全问题。
我最终实现了一个自定义应用程序,其工作方式与 Nexus Mod Manager 非常相似。我编写了一个注册自定义“应用程序 URI 方案”的 C# 应用程序。其工作原理如下:
用户点击网站上的“打印”。
print.always_print_silent
并双击它
这可以让您跳过出现的“打印”弹出框,以及跳过必须单击“确定”的步骤,自动打印正确尺寸的单据。
print.always_print_silent
没有出现
print.print_printer
您可能必须选择“通用/仅文本”(或任何收据打印机的名称)
这个子打印功能有效地取代了默认的打印功能。
<script language='VBScript'>
Sub Print()
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_PROMPTUSER = 1
call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
End Sub
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"
</script>
然后使用Javascript的window.print();绑定到超链接或按钮来执行打印命令。
如果您想在页面加载时自动打印,请将代码放在标签下方。
<script type="text/javascript">
window.onload=function(){self.print();}
</script>
打开火狐浏览器。