是否有可能绕过打印对话框的打印选项?
我正在开发一个封闭的系统,并希望能够预先定义打印对话框设置; 单击按钮后立即处理打印.
从我正在阅读的内容来看,每种浏览器的执行方式各不相同.例如,IE将使用ActiveX.Chrome/Firefox需要扩展程序.基于此,我似乎必须用C++编写一个应用程序,它可以处理浏览器传递的参数,并使用适当的格式(对于标签)进行自动打印.然后我将不得不将其重写为Chrome/Firefox的扩展程序.最终结果是我们封闭系统上的用户必须根据他们使用的浏览器下载/安装这些功能.
我希望还有另一种方法可以解决这个问题,但这项任务很可能违反浏览器安全问题.
我正在为 Firefox 浏览器写这个答案。
打开文件 > 页面设置
将所有页眉和页脚设为空白
将边距设置为 0(零)
在 Firefox 的地址栏中输入 about:config
搜索print.always_print_silent并双击它
将其从 false 更改为 true
如果print.always_print_silent没有出现
右键单击首选项窗口的空白区域
选择新建 > 布尔值
输入“print.always_print_silent”作为名称(不带引号)
单击“确定”
选择 true 作为值
您可能还想检查列出的内容print.print_printer
小智 8
我知道这是一个迟到的回复,但这是我正在使用的解决方案.我只在IE上使用它,并没有使用任何其他浏览器进行测试.
此子打印有效地取代了默认的打印功能.
<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>
Run Code Online (Sandbox Code Playgroud)
然后使用Javascript的window.print(); 绑定到超链接或按钮以执行打印命令.
如果要在页面加载时自动打印,请将代码放在标签附近.
<script type="text/javascript">
window.onload=function(){self.print();}
</script>
Run Code Online (Sandbox Code Playgroud)
我最终实现了一个与Nexus Mod Manager非常相似的自定义应用程序.我编写了一个注册自定义应用程序URI方案的C#应用程序.以下是它的工作原理:
这种方法需要从用户初始下载,并在首次启动应用程序时从Windows获得单个安全提示.我还实现了一些Javascript魔法,以检测是否处理了打印作业.如果不是它要求他们下载应用程序.