html-to-pdf - Puppeteer 从多个 HTML 字符串生成 PDF

标签 html-to-pdf puppeteer google-chrome-headless

我正在使用 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。

最佳答案

我能够通过执行以下操作来做到这一点:

  • 使用 puppeteer 生成 3 个不同的 PDF。您可以选择在本地保存文件或将其存储在变量中。
  • 我将文件保存在本地,因为我发现的所有 PDF 合并插件都只接受 URL 而它们不接受缓冲区。在本地同步生成 PDF 后,我使用 PDF Easy Merge 合并它们。 .

  • 代码是这样的:
    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/

    相关文章:

    c# - 使用 HtmlRenderer 将 HTML 转换为 PDF

    javascript - 如何使用 html2canvas 在 a4 大小的页面上调整 html 页面

    javascript - 如何在 page.goto 函数中为每个请求设置超时选项

    java - 有没有办法在 headless chrome中使用selenium上传文件?

    grails - 如何使用Grails渲染将html转换为pdf?

    pdf-generation - wkhtmltopdf 在打印前等待条件

    node.js - Heroku 上出现错误。无法启动 Chrome

    javascript - 在 Puppeteer 中排除具有某些类的元素

    google-chrome - 将 acceptInsecureCerts 与 Headless Chrome 和 Selenium Webdriver、macOS、Rails、Capybara 结合使用

    docker - ubuntu docker 容器中的 headless Chrome