在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这样的模块?
doc.end()
来实际触发结束事件。我为那些第一次使用该库的人添加了一个修改。 - jeremywoertinkfs.writeFileSync('test.pdf', Buffer.concat(buffers))
。当然,为了正确地执行此操作,您应该对其进行流处理,而不需要缓冲:doc.pipe (fs.createWriteStream('test.pdf'))
。 - Farid Nouri Neshatdoc.on('end')
真的很有帮助。我花了4个小时来尝试解决这个问题,而你的解决方案解决了它。这让我不必创建临时文件来上传到其他地方,现在我可以直接发送缓冲区。 - Luke Brown