无需打印popup窗口直接从浏览器打印

正如它在这个主题中所说,我已经创build了一个基于networking的应用程序的function,将允许用户直接发送打印,而不会提示任何对话框只是使打印,即点击和打印,简单! 但不适合我:(。

请build议什么是最好的select,我应该如何写(技术)。

build议请!

谢谢。

编辑:打印应在用户的默认打印机上发送。

我找不到其他浏览器的解决scheme。 当我发布这个问题,IE浏览器是在更高的优先级,很高兴我find了一个。 如果你有其他浏览器(firefox,safari,opera)的解决scheme,请在这里分享。 谢谢。

VBSCRIPT比在VB6或C#/ VB.NET上创buildActiveX方便得多:

<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> 

将发送打印而不popup打印窗口。

AttendStar创build了一个免费的插件,禁止打印对话框,并删除大多数版本的Firefox的所有页眉和页脚。

https://addons.mozilla.org/en-US/firefox/addon/attendprint/

有了这个function,你可以使用$('img')。jqprint(); 和jqprint for jquery将只打印自动从您的Web应用程序调用的图像。

IE9不再支持通过调用window.print()(如IE7和IE8)来触发Print()VBScript,因此window.print()现在总是会触发IE9中的打印对话框。

修复非常简单。 您只需要调用Print()本身,而不是onclick事件中的window.print()。

我在另一个问题的答案中更详细地描述了修正,其中有一个工作代码示例,其中包含稍微更新的HTML语法(尽可能多地作为工作代码进行testing)。

你可以在这里find示例代码:

绕过IE9中的Printdialog

我不相信这是可能的。 显示的对话框允许用户select要打印的打印机。 所以,假设您的应用程序只能点击并打印,而用户点击您的打印button,但有两台打印机连接到计算机。 或者,更可能的是,该用户正在办公楼内使用25台打印机。 没有那个对话框,计算机如何知道打印哪台打印机?

this.print(假);

我在Chrome,Firefox和IE中试过这个。 它只适用于Firefox和IE浏览器,它使用默认的打印机(默认打印设置),只有当我渲染一个PDF(我使用安全阅读模式禁用福昕阅读器)时才起作用。 Chrome显示打印对话框,当我呈现HTML页面时,也显示其他浏览器。

对于IE浏览器,“VBScript解决scheme”起作用。

但正如在IE9的Bypass Printdialog中 @purefusion提到的,使用Print()而不是window.print()

这应该工作,我自己试了一下,它为我工作。 如果您传递True而不是false,则会出现打印对话框。

 this.print(false);