我正在使用 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。
最佳答案
我能够通过执行以下操作来做到这一点:
代码是这样的:
const page1 = '<h1>HTML from page1</h1>';
const page2 = '<h1>HTML from page2</h1>';
const page3 = '<h1>HTML from page3</h1>';
const browser = await puppeteer.launch();
const tab = await browser.newPage();
await tab.setContent(page1);
await tab.pdf({ path: './page1.pdf' });
await tab.setContent(page2);
await tab.pdf({ path: './page2.pdf' });
await tab.setContent(page3);
await tab.pdf({ path: './page3.pdf' });
await browser.close();
pdfMerge([
'./page1.pdf',
'./page2.pdf',
'./page3.pdf',
],
path.join(__dirname, `./mergedFile.pdf`), async (err) => {
if (err) return console.log(err);
console.log('Successfully merged!');
})
关于html-to-pdf - Puppeteer 从多个 HTML 字符串生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510210/