PDF打印到客户端的打印机而不打开它们

时间:2011-09-02 10:22:00

标签: java pdf struts

我正在开发一个用Java开发的Web应用程序,在Tomcat上运行struts。我在Web应用程序中有如下要求:

一个JSP页面,其中包含一个PDF文件列表,每个文件都与一个复选框相关联。 JSP页面有一个Button。一旦用户通过选择相关的复选框选择他想要打印的PDF文档,用户单击该按钮。

然后,应将所有选定的PDF文档发送到特定的本地打印机(即连接到用户正在访问Web应用程序的客户端计算机的打印机)。不应在acrobat阅读器或浏览器中打开所选PDF文件。发送给打印机时,用户不应看到PDF文档。

有人可以帮我实现这个要求吗?

3 个答案:

答案 0 :(得分:2)

可以使用 Internet Explorer和ActiveX 。在Google上搜索“自动打印”和“静音打印”。您可能必须降低Internet Explorer中的安全设置。

我们在这里将它用于我们客户的一些内部网。

对于 Firefox ,您可以通过javascript触发打印对话框。 (http://stackoverflow.com/questions/975652/silent-print-a-embedded-pdf) 如果是这种情况,您可以在print.always_print_silent=true中设置about:config来禁用FF中的打印对话框。

从来没有自己做过,所以我不能确定它是否像ActiveX一样工作。

对于 Chrome ,有一个问题是请求像FF这样的功能。请参阅https://code.google.com/p/chromium/issues/detail?id=31395

答案 1 :(得分:0)

您很可能必须使用Java Applet。浏览器没有固有的能力来打印pdf文档。您可以访问“标准”adobe插件,但据我所知,它不会暴露给标准脚本环境。

您可以在此处查看:Can a Java Applet use the printer?

注意:建议对applet进行签名,以防止用户出现安全限制和/或恼人的问题以允许访问打印机。

您的applet中还需要某种形式的PDF渲染器(渲染到打印机)。像http://java.net/projects/pdf-renderer/这样的内容,请点击此处阅读:http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/

答案 2 :(得分:0)

使用JavaScript无法做到这一点。可以使用Flash或Java applet。在任何一种情况下,您都需要能够使用打印机驱动程序和自定义PDF阅读工具包。有足够的插件可供PDF阅读,两者都带有打印API。

如果我可以这样说,这是一个错误的要求 - 强迫用户在不阅读的情况下打印文件是不好的 - 应该重新协商,特别是因为它无论如何,将这些文件打印成PDF格式非常简单。