2013-04-24 268 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

相關問題