【问题标题】:Print Photo ID Card to a plastic card printer from web site从网站将照片 ID 卡打印到塑料卡片打印机
【发布时间】:2010-10-28 21:00:45
【问题描述】:

有没有人有在网络浏览器中直接打印到照片身份证打印机的经验?

我有一个管理用户数据、照片等的网络应用程序。我想为它添加一个打印身份证功能。 Web 应用程序是一个单页 javascript 应用程序,它通过 JSON 与 RESTful Web 服务通信。我想显示打印的卡片会显示什么 在用户单击打印按钮之前,正面和背面看起来都需要批准。

我正在考虑如何做到这一点:

  • 生成前后 JPG 或 PNG 图像以在服务器上打印,将它们发送到客户端进行显示和批准,然后以某种方式将图像发送到打印机。
  • 使用带有 SVG 或 Canvas 的 javascript 在 UI 中显示要打印的卡片以供批准,然后以某种方式将 SVG/canvas 数据发送到打印机。
  • 生成 PDF 并将 PDF 打印到打印机。
  • 使用 Flash 显示和打印
  • 使用 Java 小程序显示和打印
  • 还有别的吗?

我正在寻找任何人都可以在执行此操作的任何方面提供的任何类型的指导。如果您以前曾走过这条路,我会很高兴收到您的来信。特别是:

  • 您找到了哪些资源来了解如何做到这一点?
  • 是否有任何特定的打印机品牌比其他品牌的打印机效果更好?
  • 我在上面描述的方法中是否有更好的方法,为什么?
  • 我还可以打印条形码、磁条数据、SIM 卡数据等吗?

我知道这个问题可能只是一头雾水,但任何信息都会有所帮助。谢谢!

【问题讨论】:

  • 服务器和打印机是否在同一个专用网络上,或者它们之间是否有开放的互联网?
  • @Mark:他们之间的互联网很开放。我将服务器作为付费 Web 服务产品的一部分进行管理。我的客户将在他们的位置拥有打印机,并且将打印通过 REST API 从 Web 服务存储和提取的数据。我的偏好是让客户只需要一个网络浏览器和安装正确的打印驱动程序。

标签: java javascript flash printing id-card


【解决方案1】:

我的公司使用选项“2”执行此操作,例如在连接了卡片打印机的机器上运行的代理(实际上是 MFC 应用程序)。

代理会定期检查互联网 URL 以寻找新的打印作业;打印作业是使用 Web 服务器上生成的脚本定义的,该脚本包括要编码的磁条数据、用户名/图片以及在卡片纸上打印的位置等详细信息。打印作业成功后,代理将回传到服务器。回传到服务器很重要,因为证卡打印机往往会经常出现故障。

这种方法的最大好处是多个用户可以共享一台打印机,因此您无需为每个进行卡片注册的工作站购买打印机。证卡打印机比较繁琐,需要大量维护,因此支持单台打印机更容易。

另一个好处是您不必为想要支持的所有浏览器平台编写插件。最后,它可以让 Linux/MacOS 的用户使用该系统打印卡(只要他们愿意设置 Windows 机器来驱动打印机。)

【讨论】:

  • 您的解决方案听起来比基于 MS Access 的代理更强大,尤其是回发。我绝对觉得这是正确的方向。感谢您今天早些时候抽出一些时间与我进一步讨论这个问题。
【解决方案2】:

从 40,000 英尺的角度看。我可以想到两种以 Microsoft 为中心的方式……都涉及浏览器之外的进程。

1) 使用 Internet Explorer,编写一个 IE Plugin 应用程序,该应用程序通过对象声明插入浏览器,并传递数据、图像等的 Javascript 字段值。与打印机/打印驱动程序的所有通信都由远程处理 .dll。我想你也可以用 Firefox 插件做类似的事情。我使用这种方法将来自信用卡读卡器的数据直接处理到浏览器屏幕中。

2) 如果数据来自数据库,请编写一个独立的代理程序,该代理程序在连接到打印机的工作站上运行。当您单击浏览器表单上的“打印”按钮时,它会在数据库中设置一个标志。代理会定期扫描此标志,并打印结果记录。我用这种方法在 Eltron 或 Zebra 证卡打印机上打印。事实上,我使用 MS-Access 作为代理。

【讨论】:

  • 实际上,这个应用程序主要设计用于 Chrome、Safari 或 Firefox。它也可以在 IE 中工作,但我不能要求 IE,也不想制作 IE 或浏览器特定的解决方案。所以你的第一个解决方案行不通。然而,第二个想法值得考虑。我会考虑一下。感谢您的想法。
  • 为了详细说明,我实际上在一个单独的表中创建了一条记录,该表交叉引用了请求工作站的数据记录。然后我让代理应用程序查找来自该(和/或其他)工作站的请求,打印作业,然后删除记录。
【解决方案3】:

从另一个 40,000 英尺的视图 - 如果它的简单布局(一张照片和几行文本)并且您知道将使用哪个浏览器进行打印 - 您可以通过 css 设置所有样式。

我假设实际打印卡片的用户已将打印机安装到他的计算机上。

打印条形码也不会有什么问题(它只是一个图像 - 如果使用了可靠的好打印机)

【讨论】:

  • 谢谢,是的,我认为条形码不是问题。这个问题更多地与打印磁条有关。 CSS、图像和文本可能有效,但卡片模板也有背景,通常不会打印 CSS 背景。
  • 另外,这些打印机中的一些需要控制代码才能正确定位等。这似乎会使浏览器直接解决方案变得困难。
  • @RichO:这是我关心的问题,也是我询问其他人是否曾经走这条路的主要原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2011-07-04
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
相关资源
最近更新 更多