正如它在主题中所说,我要为基于 Web 的应用程序创建一个功能,该功能将允许用户直接发送打印而不提示任何对话框,只需进行打印,即单击并打印,简单!但不适合我:(。
请建议最好的选择以及我应该如何编写它(技术)。
请建议!
谢谢。
编辑:打印应该在用户的默认打印机上发送。
正如它在主题中所说,我要为基于 Web 的应用程序创建一个功能,该功能将允许用户直接发送打印而不提示任何对话框,只需进行打印,即单击并打印,简单!但不适合我:(。
请建议最好的选择以及我应该如何编写它(技术)。
请建议!
谢谢。
编辑:打印应该在用户的默认打印机上发送。
我找不到其他浏览器的解决方案。当我发布这个问题时,IE 具有更高的优先级,很高兴我找到了一个。如果您有其他浏览器(firefox、safari、opera)的解决方案,请在此处分享。谢谢。
VBSCRIPT 比在 VB6 或 C#/VB.NET 上创建 ActiveX 方便得多:
<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>
现在,调用:
<a href="javascript:window.print();">Print</a>
将发送打印而不弹出打印窗口。
AttendStar 创建了一个免费的附加组件,它禁止打印对话框并删除大多数版本的 Firefox 的所有页眉和页脚。
https://addons.mozilla.org/en-US/firefox/addon/attendprint/
使用该功能,您可以使用 $('img').jqprint(); jqprint for jquery 只会打印从您的 Web 应用程序自动调用的图像。
IE9 不再支持像 IE7 和 IE8 那样通过调用 window.print() 来触发 Print() VBScript,因此 window.print() 现在将始终触发 IE9 中的打印对话框。
修复非常简单。您只需要调用 Print() 本身,而不是 onclick 事件中的 window.print() 。
我在另一个问题的答案中更详细地描述了该修复程序,其中包含一个工作代码示例,其中包含略微更新的 HTML 语法(尽可能多地作为工作代码进行测试)。
您可以在此处找到该示例代码:
我不相信这是可能的。显示的对话框允许用户选择要打印的打印机。因此,假设您的应用程序可以只单击并打印,并且用户单击您的打印按钮,但有两台打印机连接到计算机。或者,更有可能的是,该用户正在拥有 25 台打印机的办公楼中工作。如果没有该对话框,计算机如何知道要打印到哪台打印机?
this.print(false);
我在 Chrome、Firefox 和 IE 中试过这个。它仅在 Firefox 和 IE 中有效,它使用默认打印机(具有默认打印设置)并且仅在我呈现 PDF 时有效(我使用禁用了安全阅读模式的福昕阅读器)。当我呈现 HTML 页面时,Chrome 会显示打印对话框以及其他浏览器。
对于 IE 浏览器,“VBScript 解决方案”有效。
但正如@purefusion 在绕过 IE9中的 Printdialog 中所提到的,使用 Print() 而不是 window.print()
这应该可行,我自己尝试过,它对我有用。如果您传递 True 而不是 false,则会出现打印对话框。
this.print(false);