如何合并多个网页并将它们转换为 pdf 格式?

How can I combine multiple webpages and get them as pdf?

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

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。有关转换的更多信息,请检查 link。 https://www.npmjs.com/package/html-pdf

这是一个替代解决方案,有很多用于合并 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);

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