我正在使用Puppeteer从HTML字符串生成PDF文件。阅读文档时,我发现了两种生成PDF文件的方法:
首先,传递一个url并调用goto
方法,如下所示:
page.goto('https://example.com');
page.pdf({format: 'A4'});
第二个,也就是我的例子,调用方法setContent
,如下所示:
page.setContent('<p>Hello, world!</p>');
page.pdf({format: 'A4'});
问题是,我有3个不同的HTML字符串是从客户端发送的,我想生成一个包含3个页面的PDF文件(如果我有3个HTML字符串)。
我想知道是否有一种方法可以用Puppeteer做到这一点?我接受其他建议,但我需要使用chrome-headless。
发布于 2021-06-10 11:39:53
pdf-merger-js是另一种选择。page.setContent
应该和下面page.goto
的临时替代品一样工作:
const PDFMerger = require("pdf-merger-js"); // 3.1.0
const puppeteer = require("puppeteer"); // 8.0.0
const urls = [
"https://news.ycombinator.com",
"https://en.wikipedia.org",
"https://www.example.com",
// ...
];
const filename = "merged.pdf";
let browser;
(async () => {
browser = await puppeteer.launch();
const [page] = await browser.pages();
const merger = new PDFMerger();
for (const url of urls) {
await page.goto(url);
merger.add(await page.pdf());
}
await merger.save(filename);
})()
.catch(err => console.error(err))
.finally(() => browser?.close())
;
https://stackoverflow.com/questions/48510210
复制相似问题