Jos*_*iah 5 javascript printing pdf node.js
我正在使用Node JS的IPP(和CUPS)从我们的儿童登记系统打印标签(DYMO Labelwriter 450 Turbo).我需要打印qty每个标签的不同数量(var ),具体取决于孩子在哪个房间(1-3).目前我正在为每个标签创建一个新的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)
})
}
});
}
Run Code Online (Sandbox Code Playgroud)
更新:
看起来我的问题是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');
Run Code Online (Sandbox Code Playgroud)
无法找到打印机的哪些错误.如何在IPP中使用此选项?
更新#2:
/etc/cups/printers.conf您尝试将其添加到CUPS 主机上的DeviceURI 中吗?
如果您在 CUPS 运行时通过简单地编辑该文件来完成此操作,则它将不起作用。通常,printers.conf不适合直接编辑。它确实在第一行中声明了这一点(尖叫“ #DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING ”)。
永久更改打印机配置的推荐方法是lpadmin在 CUPS 服务器上使用以下命令:
lpadmin -h cupsserver -P printername -E -v ipp://11.2.13.14:631/waitprinter=false
Run Code Online (Sandbox Code Playgroud)
然后,CUPS 服务器将告诉 CUPS 客户端,他们可以通过以下方式访问该打印机:
http://cupsserver:631/printername
Run Code Online (Sandbox Code Playgroud)
(如果您确实需要直接编辑 Printers.conf,则必须先停止 CUPS 守护程序,进行编辑,然后重新启动 cupsd。)
要临时更改打印机配置(仅适用于下一个作业),您可以lp在发送作业时通过命令传递该选项:
lp -d printername -o waitprinter=false myjob.pdf
Run Code Online (Sandbox Code Playgroud)
转化为您的问题空间,该解决方案意味着:
不要尝试更改var printer = ipp.Printer ...声明中的打印机名称。
相反,更改操作属性标签并'waitprinter': 'false'在其中添加一条语句。
| 归档时间: |
|
| 查看次数: |
1891 次 |
| 最近记录: |