Puppeteer pdf
栏目:
NodeJs
发布时间:2024-12-24
本教程将详细指导你如何使用 puppeteer 生成 PDF 文件。
使用 Puppeteer 生成 PDF
使用 Puppeteer 生成 PDF 文件通常涉及以下几个关键步骤:
- 启动浏览器实例
- 打开新页面
- 导航到目标网页
- 生成 PDF
- 关闭浏览器
下面是一个完整的示例代码,展示了如何使用 Puppeteer 生成 PDF 文件:
(async () => {
// 启动浏览器实例
const browser = await puppeteer.launch({
headless: true, // 无头模式,不打开浏览器窗口
args: ['--no-sandbox', '--disable-setuid-sandbox'] // 解决 Linux 上的沙箱问题
});
// 打开新页面
const page = await browser.newPage();
// 导航到目标网页(可以替换为你的 URL)
await page.goto('https://tides.cn', { waitUntil: 'networkidle2' });
// 生成 PDF,并指定输出路径和格式选项
const pdfOptions = {
path: 'example.pdf', // PDF 文件保存路径
format: 'A4', // 纸张大小
printBackground: true, // 是否打印背景
preferCSSPageSize: true, // 是否优先使用 CSS 设置的页面大小
margin: {
top: '1cm',
right: '1cm',
bottom: '1cm',
left: '1cm'
}, // 边距设置
headerTemplate: `<div style="width:100%; text-align:right; margin-right: 20px; font-size:10px">页眉</div>`, // 页眉模板
footerTemplate: `<div style="width:100%; text-align:right; margin-right: 20px; font-size:10px">页脚</div>`, // 页脚模板
// 你可以根据需要添加更多的选项,如 landscape: true(横向打印)等
};
await page.pdf(pdfOptions);
// 关闭浏览器
await browser.close();
console.log('PDF 已成功生成并保存到 example.pdf');
})();
注意事项
- 无头模式:在上面的示例中,我们使用了
headless: true
选项来启动无头浏览器实例,这意味着不会打开实际的浏览器窗口。这通常用于服务器环境或自动化脚本中,以减少资源消耗。 - 等待页面加载:在调用
page.pdf()
方法之前,我们使用await page.goto('https://tides.cn', { waitUntil: 'networkidle2' });
来确保页面已经完全加载。waitUntil: 'networkidle2'
表示等待网络请求稳定(即没有新的网络请求超过 500ms)。 - PDF 选项:
page.pdf()
方法接受一个选项对象,用于配置 PDF 的各种属性,如纸张大小、边距、是否打印背景、页眉和页脚模板等。你可以根据需要调整这些选项。 - 错误处理:在实际应用中,你应该添加错误处理逻辑来捕获和处理可能发生的异常,例如网络问题、页面加载失败等。
运行代码
将上述代码保存为一个 JavaScript 文件(例如 generate-pdf.js
),然后在终端中运行以下命令来执行脚本:
node generate-pdf.js
如果一切正常,你将在脚本所在的目录下找到一个名为 example.pdf
的文件,该文件包含从 https://tides.cn
导出的网页内容。
通过本教程,你应该已经掌握了如何使用 Puppeteer 生成 PDF 文件的基本方法。你可以根据需要进一步自定义 PDF 的输出选项,并将该方法集成到你的 node.js 应用程序中。
本文地址:https://www.tides.cn/p_node-puppeteer-pdf