首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Puppeteer从多个HTML字符串生成PDF

Puppeteer从多个HTML字符串生成PDF
EN

Stack Overflow用户
提问于 2018-01-30 05:22:36
回答 1查看 15.3K关注 0票数 10

我正在使用Puppeteer从HTML字符串生成PDF文件。阅读文档时,我发现了两种生成PDF文件的方法:

首先,传递一个url并调用goto方法,如下所示:

代码语言:javascript
运行
复制
page.goto('https://example.com');
page.pdf({format: 'A4'});

第二个,也就是我的例子,调用方法setContent,如下所示:

代码语言:javascript
运行
复制
page.setContent('<p>Hello, world!</p>');
page.pdf({format: 'A4'});

问题是,我有3个不同的HTML字符串是从客户端发送的,我想生成一个包含3个页面的PDF文件(如果我有3个HTML字符串)。

我想知道是否有一种方法可以用Puppeteer做到这一点?我接受其他建议,但我需要使用chrome-headless。

EN

回答 1

Stack Overflow用户

发布于 2021-06-10 11:39:53

pdf-merger-js是另一种选择。page.setContent应该和下面page.goto的临时替代品一样工作:

代码语言:javascript
运行
复制
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())
;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48510210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档