在java Web应用程序上打印服务

我有一个Enterprise Java Web应用程序,所有业务都从客户端 – 服务器应用程序迁移。 所以我需要调整所有要求,包括在每个客户端上打印(使用点阵/纯文本)。

客户在分离客户端的打印要求是他们必须在处理完成后立即获得报告,比如打印一些系统信息。 在客户端 – 服务器上很容易打印,但是当我迁移到Web应用程序时,我们使用嵌入到应用程序的服务器/小程序服务。 因此,当客户端打开浏览器时,applet将被初始化。

它有效,但问题太多了。 有时applet会在没有客户端操作的情况下突然关闭,因此applet将自动从数据库中检查排队的报告。 这个案子有什么建议吗?

我使用Spring Framework作为业务层。

几年前我遇到了同样的问题。

这就是我所做的。

由于我的处理是在服务器上进行的,所以我知道交易完成的时间。 所以我做的是直接从服务器发送打印请求。 客户端打印机已在服务器中配置,因为它在LAN中使用,因此可以轻松访问。 这样我完成了applet所遇到的所有问题,权衡是他们只能在办公室打印,但在我的情况下这很好,不一定适用于你,试一试。

UPDATE

就我而言,全国各地不同部门都需要印刷品。

每个部门都有一个特定的,独特的打印机用于该任务。 所以我所做的就是将该打印机安装在服务器文件系统中(在Unix中类似/ Volumes / printers / EPSON-12345,在Windows中作为x:\ printers \ EPSON-12345)当用户在webapp中完成事务时我开始在服务器中的打印请求。 Java完全没有任何打印到本地打印机的问题,并且由于映射的打印机被视为本地打印机(即使它是远程打印机),因此您不需要进一步的授权或任何特殊的操作。

因为我知道特定的打印机映射了什么,我知道什么样的交易,我知道在哪里打印。

最后,我使用属性文件允许打印机不时更改和/或添加更多打印机。

我不太记得细节,但它在服务器中是这样的:

ResourceBundle bundle = ResourceBundle.getBundle("printers"); String serviceName = bundle.getString("MEXICO.CITY.PRINTER"); PrintService service = PrintService.find( serviceName ); service.print( // document and etc ); 

但这差不多是4年了。 所以我不记得确切的细节,但我的程序仍在运行:)

您可以在此处阅读有关java中打印服务的更多信息。 它比它看起来简单得多。

其他获得良好结果的方法:

  • 在服务器上生成PDF(使用iText或更好的JasperReports),并将其发送到客户端,在那里他可以打印它。
  • 有一个print.css ,并生成一个适合打印的网页。

如果您不希望客户端浏览器协调打印(即通过发送具有用户必须设置为发送到打印机的自定义MIME类型的二进制blob),则必须让服务器执行此操作。

这通常意味着用户必须将默认打印机连接到其配置文件,并且服务器知道如何将打印件发送到该打印机。 很有意思 :)