保存pdf文件后我需要做一些内务管理:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.on('finish',function(){
console.log("Finished");
process.exit();
}).pipe(pdfFile);
pdf.end();
console.log("After save");
}, true, true);
但是第二个嵌套函数中的代码永远不会启动。 pdf是来自pdfkit库的对象。我该如何解决?
UPD:这种方法也不起作用:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdfFile.on('finish',function(){
console.log("Finished");
process.exit();
});
pdf.pipe(pdfFile);
//pdf.end();
console.log("After save");
}, true, true);
答案 0 :(得分:3)
您需要在管道对象上捕获事件finish
,而不是在pdf对象上:
console.log("saving file");
pdf
.pipe( fs.createWriteStream("./test2.pdf") )
.on( 'finish', function(){
console.log("Finished");
});
pdf.end();
console.log("After save");
答案 1 :(得分:1)
如果pdf
是正确的NodeJS流,您只需将其传输到写入流中即可完成。如果您想在保存文件后退出程序,可以在'关闭'上执行此操作。
注意:保存后没有""州(因为你结束了这个过程)。在保存文件之前,代码中的console.log("After save")
行称为!
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.pipe(pdfFile);
pdfFile.on('close',function(){
console.log("Finished");
process.exit();
});
}, true, true);
答案 2 :(得分:0)
pdf
意味着从读取而不是写入。这意味着您应该将其视为可读流,因此请在finish
上收听pdfFile
,然后移除pdf.end()
。