Node.js:如何将打印作业添加到打印机
Posted
技术标签:
【中文标题】Node.js:如何将打印作业添加到打印机【英文标题】:Node.js : How to add print job to printer 【发布时间】:2013-04-24 09:08:10 【问题描述】:我正在使用 node.js 开发一个 Web 应用程序,我有一个场景来打印我本地的一些 pdf 文件。
例如:
var ipp = require('ipp');
var PDFDocument = require('pdfkit');
//make a PDF document
var doc = new PDFDocument(margin:0);
doc.text(".", 0, 780);
doc.output(function(pdf)
var printer = ipp.Printer("http://NPI977E4E.local.:631/ipp/printer");
var msg =
"operation-attributes-tag":
"requesting-user-name": "William",
"job-name": "My Test Job",
"document-format": "application/pdf"
,
data: pdf
;
printer.execute("Print-Job", msg, function(err, res)
console.log(res);
);
);
我已经参考了上面的示例,但是在该示例中创建了 PDF,但在我的情况下,我想打印现有的 PDF 文件。
有什么建议吗???
【问题讨论】:
【参考方案1】:var fs = require('fs');
fs.readFile('filename.pdf', function(err, data)
if (err)
throw err;
var printer = ipp.Printer("http://YOUR.PRINTER.SERVER.HOSTNAME:631/ipp/printer");
var msg =
"operation-attributes-tag":
"requesting-user-name": "William",
"job-name": "My Test Job",
"document-format": "application/pdf"
,
data: data
;
printer.execute("Print-Job", msg, function(err, res)
console.log(res);
);
);
【讨论】:
err
说了什么?顺便说一句,只是剪切和粘贴示例代码显然是行不通的,除非您的打印机也位于名为 NPI977E4E.local
的服务器上。
[错误:getaddrinfo ENOENT] 代码:'ENOTFOUND',errno:'ENOTFOUND',系统调用:'getaddrinfo'
所以将NPI977E4E.local
替换为您的IPP服务器的地址或主机名。
我更改了打印机的主机名并检查了它显示的“null”。
当err
为空时,表示没有发生错误。这应该是件好事。【参考方案2】:
如果我理解正确,您想打印本地 PDF 文件,并且已经可以打印了吗?
Node.js 具有可用于检索 PDF 文件的 fs api。 http://nodejs.org/api/fs.html
https://npmjs.org/package/ipp 在我看来,您似乎不必在操作中使用 PDFkit 对象作为数据属性。您可以只使用可以通过 fs 读取的数据。
【讨论】:
首先尝试让您的地址和网络配置正常工作,然后尝试在您的示例中打印该在线创建的 PDF。迈出小步。以上是关于Node.js:如何将打印作业添加到打印机的主要内容,如果未能解决你的问题,请参考以下文章