在PDFkit 0.5之前-以下对我有用(通过pdfkit生成pdf/通过ipp打印到CUPS):
var ipp = require("ipp");
var PDFDocument = require("pdfkit");
var doc = new PDFDocument;
doc.text("Hello World");
doc.output(function(pdf)){
var printer = ipp.Printer("http://127.0.0.1:631/printers/1");
var file = {
"operation-attributes-tag":{
"requesting-user-name": "User",
"job-name": "Print Job",
"document-format": "application/pdf"
},
data: new Buffer(pdf, "binary")
};
printer.execute("Print-Job", file, function (err, res) {
console.log("Printed: "+res.statusCode);
});
}
从 PDFkit 0.5 开始 - 不推荐使用
output
方法 - 但我似乎找不到在我的场景中使用新的 pipe
方法的示例。如果我不使用浏览器,我还需要像 blob-stream 这样的模块吗? 最佳答案
由于 pdfkit PDFDocument 现在是一个流,您必须缓冲来自缓冲区的数据:
var ipp = require("ipp");
var PDFDocument = require("pdfkit");
var doc = new PDFDocument;
doc.text("Hello World");
var buffers = [];
doc.on('data', buffers.push.bind(buffers));
doc.on('end', function () {
var printer = ipp.Printer("http://127.0.0.1:631/printers/1");
var file = {
"operation-attributes-tag":{
"requesting-user-name": "User",
"job-name": "Print Job",
"document-format": "application/pdf"
},
data: Buffer.concat(buffers)
};
printer.execute("Print-Job", file, function (err, res) {
console.log("Printed: "+res.statusCode);
});
});
doc.end();
或者,您可以使用类似concat-stream模块的方法:
var ipp = require("ipp");
var PDFDocument = require("pdfkit");
var concat = require("concat-stream");
var doc = new PDFDocument;
doc.text("Hello World");
doc.pipe(concat(function (data) {
var printer = ipp.Printer("http://127.0.0.1:631/printers/1");
var file = {
"operation-attributes-tag":{
"requesting-user-name": "User",
"job-name": "Print Job",
"document-format": "application/pdf"
},
data: data
};
printer.execute("Print-Job", file, function (err, res) {
console.log("Printed: "+res.statusCode);
});
}));
doc.end();
关于node.js - 如何使用带有 Node js 的 pdfkit 管道流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23771085/