[英]Node.js web service using Puppeteer to create PDF creates empty PDF file
以下代码来自Node.js REST服务。 “generate”是类上的方法(未示出)。 对“生成”的调用显示在类定义下方。
当我调用此端点时,会创建一个PDF(“test.pdf”)并将结果返回给浏览器; 然而,它是空的。 就好像对Handlebars的调用没有执行或者代码超出了该调用并用空字符串(“h”)执行它。
话虽这么说,我已经记录了“h”的值,并且它确实显示了HTML文档,所有Handlebar占位符都正确填写。
我有一种感觉这与Promises有关,但我不确定。 希望另一双眼睛可以帮助我看到问题。
注意:我知道async / await,但是,我在节点6.9.5上,所以它不可用。
提前致谢!
class PDF {
...
generate() {
return new Promise((resolve,reject)=>{
this.render().then((h)=>{
const browser = Puppeteer.launch({headless: true}).then((b)=>{
const page = b.newPage().then((p)=>{
p.setContent(h, {waitUntil: 'load'}).then(()=>{
p.pdf({path: 'test.pdf', format: 'A4'}).then((z)=>{
resolve(z);
});
});
});
});
});
});
}
}
// *****************************************************************************
// REST API Routes
// *****************************************************************************
app.get('/mysite/pdf', (req,res)=>{
var pdf = new PDF(33);
pdf.generate().then((data)=>{
res.contentType('application/pdf');
res.send(data);
});
});
问题不是Node,而是我加载的HTML模板。 它的格式错误导致页面无法在浏览器中显示,更不用说生成空白PDF了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.