Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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
Javascript 对节点JS使用IPP时的打印作业延迟_Javascript_Node.js_Pdf_Printing - Fatal编程技术网

Javascript 对节点JS使用IPP时的打印作业延迟

Javascript 对节点JS使用IPP时的打印作业延迟,javascript,node.js,pdf,printing,Javascript,Node.js,Pdf,Printing,我正在使用(和)Node JS从我们的孩子登记系统打印标签(DYMO-Labelwriter 450-Turbo)。根据孩子所在的房间(1-3),我需要打印每个标签的不同数量(varqty)。目前,我正在为每个标签创建一个新的IPP打印作业-但打印之间有几秒钟的延迟 是否有办法将每项作业的数量传递给IPP,以消除延迟?或者将多个相同的.pdf文件传递到一个作业中 Varspdf(生成的标签-使用a)、qty(需要打印的标签数量)和pid(要打印的打印机的打印机ID)被传递到以下代码位: func

我正在使用(和)Node JS从我们的孩子登记系统打印标签(DYMO-Labelwriter 450-Turbo)。根据孩子所在的房间(1-3),我需要打印每个标签的不同数量(var
qty
)。目前,我正在为每个标签创建一个新的IPP打印作业-但打印之间有几秒钟的延迟

是否有办法将每项作业的数量传递给IPP,以消除延迟?或者将多个相同的.pdf文件传递到一个作业中

Vars
pdf
(生成的标签-使用a)、
qty
(需要打印的标签数量)和
pid
(要打印的打印机的打印机ID)被传递到以下代码位:

function print(qty, pid, first, last, gender, room, notes, notesr, timestamp, age, grade, code) {

    fs.readFile('label.pdf', 'utf-8', function (err, pdf) {

        pdf = pdf.toString();
        pdf = pdf.replace('<FIRST>', first).replace('<LAST>', last).replace('<GENDER>', gender).replace('<ROOM>', room).replace('<NOTES>', notes).replace('<NOTESON>', notesr).replace('<TIMESTAMP>', timestamp).replace('<AGE>', age).replace('<GRADE>', grade).replace('<CODE>', code);

        if (err)
            throw err;

        var printer = ipp.Printer('http://127.0.0.1:631/printers/DYMO_'+pid);
        var file = {
            'operation-attributes-tag':{
                'requesting-user-name': 'Test User',
                'job-name': 'My Test Job',
                'document-format': 'application/pdf'
            },
            data: new Buffer(pdf, 'binary')
        };

        for (var i = 0; i < qty; i++) {
            printer.execute('Print-Job', file, function (err, res) {
                console.log('Printed: '+res.statusCode)
            })
        }
    });
}
无法找到该打印机的错误。如何在IPP中使用此选项

更新#2:


出于紧急需要,我创建了一个解决方案,用于动态生成多页标签pdf,并将该系列的所有标签作为单个打印作业发送。

您尝试将其添加到cups主机上
/etc/cups/printers.conf
中的DeviceURI中吗

如果您只是在CUPS运行时编辑该文件,它将不起作用。通常,
printers.conf
不用于直接编辑。它在第一行中确实说明了这一点(尖叫着“不要在CUPSD运行时编辑此文件”)

1. 建议使用CUPS服务器上的
lpadmin
命令永久更改打印机配置:

lpadmin -h cupsserver -P printername -E -v ipp://11.2.13.14:631/waitprinter=false
CUPS服务器随后会告诉CUPS客户端,他们可以通过

http://cupsserver:631/printername
(如果确实需要直接编辑printers.conf,则必须先停止CUPS守护进程,进行编辑,然后重新启动cupsd。)

2. 要临时更改打印机配置(仅针对下一个作业),可以在发送作业时使用
lp
命令传递该选项:

lp -d printername -o waitprinter=false myjob.pdf
转化为您的问题空间,此解决方案意味着:

  • 不要试图更改
    var printer=ipp.printer…
    语句中的打印机名称

  • 而是更改操作属性标签,并在其中添加一个
    'waitprinter':'false'
    语句


  • 顺便说一下,标签数量不再是一个问题。我决定创建3个pdf模板“label1.pdf”、“label2.pdf”、“label3.pdf”-这样可以固定相同标签之间的速度,因为我可以通过单个作业发送它们。我现在关心的是更新部分:对DeviceURI使用选项,
    waitprinter=false
    。谢谢是否可以在.conf文件中全局配置
    waitprinter
    选项?在URI中添加
    waitprinter=false
    后,您的
    /etc/cups/printers.conf
    配置是什么样子的?
    lp -d printername -o waitprinter=false myjob.pdf