2013-04-24 237 views
3

我正在开发一个使用node.js的web应用程序,我有一个场景来打印位于本地的一些pdf文件。Node.js:如何将打印作业添加到打印机

例:

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文件。

任何建议???

回答

0

如果我理解正确,你想打印本地PDF文件,并已经打印作品?

Node.js有可用于检索PDF文件的fs api。 http://nodejs.org/api/fs.html

https://npmjs.org/package/ipp对我来说,似乎并不需要在操作中将PDFkit对象用作data -property。您可以使用您可以使用fs读取的数据。

+0

打印上面的代码 – 2013-04-24 10:47:00

+1

尽量不工作,让您的地址和网络配置第一份工作,并尝试只是打印,在网上您的示例中创建的PDF。 小步骤。 – 2013-04-24 10:59:33

2
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); 
    }); 
}); 
+0

res显示未定义。 – 2013-04-24 10:48:23

+0

“err”是什么意思?顺便说一句,只是切割和粘贴示例代码显然不起作用,除非您的打印机位于名为'NPI977E4E.local'的服务器上。 – robertklep 2013-04-24 10:52:18

+0

{[错误:getaddrinfo ENOENT]代码:'ENOTFOUND',errno:'ENOTFOUND',系统调用:'getaddrinfo'} – 2013-04-24 10:57:08

相关问题