【发布时间】:2016-10-20 06:48:50
【问题描述】:
我想使用 Java 从网络浏览器生成 POS(销售点)收据。
如何打印 pos 收据?
我相信jzebra 可能是一个选项,但如何?
【问题讨论】:
标签: javascript java jquery ajax bootstrapping
我想使用 Java 从网络浏览器生成 POS(销售点)收据。
如何打印 pos 收据?
我相信jzebra 可能是一个选项,但如何?
【问题讨论】:
标签: javascript java jquery ajax bootstrapping
注意:我真的怀疑您会发现浏览器“愿意”在未经用户批准的情况下直接向打印机发送任何内容 - 这将是攻击毫无戒心的用户登陆恶意网站的好方法.所以,抱歉,不 - 您无法在客户端执行任何操作(Java 或任何其他语言)。
因此,要么将您的收据格式化为 HTML(危险的工作,每个浏览器都有自己的字体设置),要么让您的服务器生成可下载的 PDF,然后用户可以打印该 PDF。
对于在 Java 上运行的服务器端的 PDF 生成:
安装 PDF“打印到文件”虚拟打印机(在 Linux 上,我使用了 CUPS-PDF 配置,结果直接保存在临时目录中);
使您的“POS 收据渲染器”类采用Printable 接口并实现您的 POS 收据的渲染
组织您的“POS 生成器”的代码以打开/配置一个PrinterJob,该PrinterJob 配置为使用您的receipt renderer,并针对识别您的PDF 虚拟打印机的PrintService。 Java Printing教程
作业完成打印后,将其从目标目录中取出,并以 mime 类型为 application/pdf 的用户浏览器下载并提供给用户浏览器
上面的所有内容都需要 3-4 个类,所以很抱歉没有向您显示一些代码(它将以某种方式依赖于服务器端逻辑和选择的 PDF 虚拟打印机,尤其是在“检测 PDF 打印是完成”部分)。
【讨论】:
使用 Java Applet 和类似技术(基于 NPAPI)可以通过 Web 浏览器打印材料。但在大多数主要的网络浏览器中,对 NPAPI 的支持几乎绝迹。
有关在 NPAPI 支持被取消后如何继续进行的更多信息,请参阅此问题。
Alternative to Jzebra/QZ Java Raw Print Plugin after NPAPI being dropped on Chrome Browser
【讨论】: