node.js - 从网络应用程序打印具有特定设置的文件

标签 node.js windows printing usb google-cloud-print

我正在为客户构建一个移动应用程序,用户可以在多个相框之间进行选择。他们可以使用移动设备将照片添加到此框架中。完成后,用户将被发送到付款屏幕。订单支付后,系统将创建一个二维码。有了这个二维码,他们就可以前往我们的物理支柱之一,在那里他们可以扫描二维码。柱子上装有一台计算机(Windows 10)、一台 QR 扫描仪和一台连接的打印机(三菱 D90)。系统检查订单并开始打印作业。目前,支柱计算机正在信息亭模式下运行浏览器。

enter image description here

问题

框架可以有不同的尺寸:

  • 5” x 15” x2(打印机将框架切成两半,这样你就有了两个 打印)
  • 10” x 15”
  • 15” x 10”

当我使用 native 打印窗口时,一切似乎都工作正常。我的框架非常适合页面。我可以选择不同的页面尺寸并可以使用内部切纸器。不过我想自动化整个过程。系统应该能够在不同大小之间切换,并且应该能够将作业直接推送到队列中。

方法#1

因为计算机正在运行浏览器窗口,所以我的第一个想法是设置一个 NodeJS 应用程序,该应用程序可以从服务器获取框架并将作业直接推送到队列。我调查了Node-Printer 。在我的 Macbook(使用 CUPS)上,一切都运行得非常顺利,但不幸的是,支柱运行的是 Windows。我尝试将所有内容设置为与 Macbook 上相同的方式,但无法处理打印作业。不过,我收到了作业已发送到我的打印机的消息。我花了很多天试图让它工作,但在 Windows 上运行的 Node 打印机有很多限制。我还尝试创建一个 Ubuntu 分区来看看它是否可以从那里工作,但它导致了同样的问题。

方法#2

我的第二个想法是将打印机设置为 Google 云打印机。这样我就可以将作业从网页直接推送到打印 API。然而,当我选择与使用 native 打印窗口相同的设置时,我发现了很多限制。左边是 native 打印窗口,右边是谷歌打印窗口。

enter image description here

我还尝试使用 Printer Lookup API 获取打印机设置。我可以看到很多设置(还有页面大小),但每次我尝试打印某些内容时,打印出来的内容都不一样。框架太小、太大、旋转错误、边距奇怪等。我尝试了 100 种不同的打印以及所有可能的设置组合,但没有一种接近我使用 native 打印对话框时得到的结果。

我也尝试过 Electron,但无法指定任何设置。我认为这也使用了类似 Node 打印机的解决方案。

我真的不知道该去哪里寻找或者如何解决这个问题。我花了很多天试图弄清楚发生了什么事。还有其他我没有想到的(好的)方法吗?有没有办法在 Google 云打印中获得相同的设置?

TL;DR:需要帮助从浏览器窗口(或像 Electron 这样的包装器)将打印作业推送到队列中。可以通过 Google 云打印等 API 进行,也可以直接通过 USB 进行。

最佳答案

尝试 Google 云打印并在触发打印时提供您自己的设置。

https://developers.google.com/cloud-print/docs/appInterfaces#submit

请参阅上面的文档。当您提交作业时,添加一个名为“ticket”的额外参数。并在票据中指定介质尺寸。

它看起来像这样:

ticket :   {"version":"1.0","print":{"media_size":{"width_microns":210000,"height_microns":297000,"is_continuous_feed":false,"vendor_id":"ISO_A4"}}}

(^指定要打印的高度和宽度尺寸)

您可以在以下 pdf 主题 4.2 下找到标准尺寸:

http://ftp.pwg.org/pub/pwg/cloud/white/Google_GCP/CDD_2013-11-06.pdf

尝试使用不同的高度和宽度组合以获得所需的结果

关于node.js - 从网络应用程序打印具有特定设置的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54865278/

相关文章:

windows - 你能在 xbox 360 的 XNA 项目中有 WPF 引用吗

printing - 如何以编程方式解锁 Kendo-UI Grid 多列标题

windows - 如何在 PowerShell 中的子文件夹中点源函数

c - 为什么我没有初始化它时值不为零?

css - 位置:固定在 CSS 媒体打印上似乎重复打印内容?

node.js - Node JS & Socket.io 建议 - 通过路由还是通过套接字将信息发布到数据库更好?

javascript - Node.js 从用户输入中获取完整路径

node.js - 如何从部署在AWS Elastic beanstalk上的node.js Express应用程序获取客户端IP?

javascript - Nodemailer 和 Node 中的密码问题

windows - AutoHotkey 中有没有办法知道鼠标点击和触摸屏点击