Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从web应用程序打印具有特定设置的文件_Node.js_Windows_Printing_Usb_Google Cloud Print - Fatal编程技术网

Node.js 从web应用程序打印具有特定设置的文件

Node.js 从web应用程序打印具有特定设置的文件,node.js,windows,printing,usb,google-cloud-print,Node.js,Windows,Printing,Usb,Google Cloud Print,对于一个客户端,我正在构建一个移动应用程序,用户可以在多个相框之间进行选择。他们可以使用移动设备将照片添加到此相框中。完成后,用户将被发送到付款屏幕。订单付款后,系统将创建二维码。有了二维码,他们可以进入我们的一个物理支柱,在那里他们可以扫描二维码。一个支柱有一台计算机Windows 10、一台QR扫描仪和一台连接三菱D90的打印机。系统检查订单并开始打印作业。目前,支柱计算机正在kiosk模式下运行浏览器 问题 框架可以有不同的尺寸: 5英寸x 15英寸x2打印机将机架切成两半,这样您就有两个

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

问题

框架可以有不同的尺寸:

5英寸x 15英寸x2打印机将机架切成两半,这样您就有两个机架 印刷品 10英寸x 15英寸 15英寸x 10英寸 当我使用本机打印窗口时,一切似乎都正常工作。我的相框完全适合这一页。我可以选择不同的页面大小,并可以使用内部切割器。然而,我想自动化整个过程。系统应该能够在不同大小之间切换,并且应该能够将作业直接推送到队列中

方法1

由于计算机运行的是浏览器窗口,我的第一个想法是设置一个NodeJS应用程序,该应用程序可以从服务器获取帧并将作业直接推送到队列。我调查了一下。在我的Macbook电脑上,所有的东西都像个魔咒一样使用杯子,但不幸的是,这些柱子都在运行Windows。我试着把所有的东西都设置成和我的Macbook一样的工作方式,但是我无法处理打印作业。不过,我收到消息说作业已发送到我的打印机。我花了好几天的时间试图让它正常工作,但是在Windows上运行的节点打印机有很多限制。我还试图创建一个Ubuntu分区,看看它是否可以从那里工作,但它导致了同样的问题

方法2

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

我还尝试使用获取打印机设置。我可以看到很多设置和页面大小,但每次我试图打印的东西打印只是不一样。帧太小、太大、旋转错误、边距奇怪等。我尝试了100种不同的打印,使用了所有可能的设置组合,但没有一种与使用本机打印对话框时得到的效果接近

我也尝试了Electron,但无法指定任何设置。我假设这也是使用类似节点打印机的解决方案

我真的不知道该去哪里找,也不知道该怎么解决这个问题。我花了太多的时间想弄清楚到底发生了什么。还有其他我没想到的好方法吗?有没有办法在Google Cloud Print中获得相同的设置


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

尝试谷歌云打印,并在触发打印时提供您自己的设置

参考上述文件。当您提交作业时,添加一个名为ticket的额外参数。并指定票证中的媒体大小

看起来是这样的:

ticket :   {"version":"1.0","print":{"media_size":{"width_microns":210000,"height_microns":297000,"is_continuous_feed":false,"vendor_id":"ISO_A4"}}}
^指定要打印的高度和宽度标注

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


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

尝试谷歌云打印,并在触发打印时提供自己的设置

参考上述文件。当您提交作业时,添加一个名为ticket的额外参数。并指定票证中的媒体大小

看起来是这样的:

ticket :   {"version":"1.0","print":{"media_size":{"width_microns":210000,"height_microns":297000,"is_continuous_feed":false,"vendor_id":"ISO_A4"}}}
^指定要打印的高度和宽度标注

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

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