繁体   English   中英

使用Puppeteer创建PDF的Node.js Web服务创建空PDF文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM