我正在使用IPP(和CUPS)与Node JS打印标签(DYMO Labelwriter 450 Turbo),用于我们的儿童签到系统。根据孩子所在的房间(1-3),我需要打印不同数量(var
是否有一种方法可以在每个作业中传递数量以消除延迟?或者将多个相同的.pdf传递给单个作业?
变量
qty
)的每个标签。目前,我为每个标签创建一个新的IPP打印作业,但是在打印之间存在几秒钟的延迟。是否有一种方法可以在每个作业中传递数量以消除延迟?或者将多个相同的.pdf传递给单个作业?
变量
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等待打印机返回“空闲”状态,然后才开始处理下一个作业,从而在作业之间创建延迟。需要在DeviceURI中添加一个选项waitprinter=false
来绕过等待。
我尝试将其添加到/etc/cups/printers.conf
中的DeviceURI中,但没有成功。我尝试将其添加到Printer
对象url中,例如:
var printer = ipp.Printer('http://127.0.0.1:631/printers/DYMO_'+pid+'?waitprinter=false');
打印机无法找到的错误是哪些?我如何使用IPP选项?
更新 #2:
出于紧急情况,我创建了一个解决方法,使用 pdfkit 实时生成多页标签 PDF,并将所有家庭标签作为单个打印作业发送。
waitprinter=false
与DeviceURI一起。谢谢! - Josiah/etc/cups/printers.conf
配置文件加上了waitprinter=false
到URI后是什么样子的? - Jeff Sisson