【问题标题】:How can I combine multiple webpages and get them as pdf?如何合并多个网页并将它们获取为 pdf?
【发布时间】:2018-07-16 09:50:20
【问题描述】:

在使用 puppeteer 填写表单后,我得到了多个页面。我目前正在使用 puppeteer 的“page.printToPDF”api 将网页作为 pdf 获取,但问题是我有多个页面,我想将所有页面组合起来并获得一个 pdf。无论如何我可以用 puppeteer 和 javascript 实现这一点吗?

【问题讨论】:

    标签: javascript node.js pdf puppeteer


    【解决方案1】:
    var fs = require('fs');
    var pdf = require('html-pdf');
    var html = fs.readFileSync('https://www.google.co.in/', 'utf8');
    var options = { 
      format: 'A4',
      "border": {
        "top": "0.2in",            // default is 0, units: mm, cm, in, px
        "bottom": "1in",
        "left": "0.1cm",
        "right": "0.1cm"
      },
    };
    
    pdf.create(html, options).toFile('./google.pdf', function(err, res) {
      if (err) return console.log(err);
      console.log(res); // { filename: '/app/businesscard.pdf' } 
    });
    

    您必须在使用上述代码后安装html-pdf。有关转换检查链接的更多信息。 https://www.npmjs.com/package/html-pdf

    【讨论】:

    • 我可以用它来组合多个 HTML 吗?据我所知,这可用于仅将单个 HTML 转换为 pdf。
    【解决方案2】:

    这是一个替代解决方案,有许多用于合并 pdf 文件的包。

    这里是您如何使用众多 pdf 合并包之一。

    const PDFMerge = require('pdf-merge');
    const files = [
        `${__dirname}/1.pdf`,
        `${__dirname}/2.pdf`
    ];
    const finalFile = `${__dirname}/final.pdf`;
    

    以下是打印多页然后合并它们的方法。

    // goto first page and save pdf file
    await page.goto('http://example1.com', {waitUntil: 'networkidle'});
    await page.pdf({path: files[0], format: 'A4', printBackground: true})
    
    // goto first page and save pdf file
    await page.goto('http://example2.com', {waitUntil: 'networkidle'});
    await page.pdf({path: files[1], format: 'A4', printBackground: true})
    
    // merge two of them and save to another file
    await PDFMerge(files, {output: finalFile);
    

    关键在于您如何利用您的资源。

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2019-08-26
      • 2013-03-03
      相关资源
      最近更新 更多