我正在使用带有 Node JS 的IPP(和CUPS)从我们的子签入系统打印标签(DYMO Labelwriter 450 Turbo)。我需要qty
根据孩子所在的房间(1-3)打印每个标签的不同数量(var)。目前我正在为每个标签创建一个新的 IPP 打印作业 - 但打印之间有几秒钟的延迟。
有没有办法通过每个作业将数量传递给 IPP 以消除延迟?或者也许将多个相同的 .pdf 传递到一个工作中?
Vars pdf
(生成的标签 - 使用.pdf 模板)、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)
})
}
});
}
更新:
看起来我的问题是CUPS在开始处理下一个作业之前等待打印机返回“空闲” - 从而造成作业之间的延迟。一个选项,waitprinter=false
需要添加到 DeviceURI 以绕过等待。
我尝试将其添加到 DeviceURI 中/etc/cups/printers.conf
但无济于事。我尝试将其添加到Printer
对象 url 中,例如:
var printer = ipp.Printer('http://127.0.0.1:631/printers/DYMO_'+pid+'?waitprinter=false');
找不到打印机的哪些错误。如何将此选项与 IPP 一起使用?
更新#2:
出于紧急情况,我使用pdfkit创建了一个变通方案,以即时生成多页标签 pdf,并将所有家庭的标签作为单个打印作业发送。