随着互联网的发展,越来越多的网页需要转换为 pdf 文件以便于打印、分享和保存。node.js 的出现为我们提供了一种可以在服务器端运行的环境,使得将网页转换为 pdf 文件变得更加方便和高效。本文将介绍如何使用 node.js 将网页转换为 pdf 文件。
一、安装 Node.js 和相关模块
要使用 Node.js 转换网页为 PDF 文件,首先需要在计算机上安装 Node.js 环境。Node.js 可以从官方网站 https://nodejs.org/ 下载并安装。
安装完 Node.js 后,需要安装一些相关模块:
- Express:提供 Web 应用程序开发框架。
- Puppeteer:Google 开发的一个用于控制 headless Chrome 的 Node.js 库。
可以通过以下命令在命令行工具中安装:
npm install express puppeteer
二、编写代码
在安装 Node.js 和相关模块后,开始编写代码。下面是一个简单的 Express 应用程序,在浏览器中加载网页时会自动将网页转换为 PDF 文件:
const express = require('express')
const puppeteer = require('puppeteer')
const app = express()
const port = 3000
app.get('/', async (req, res) => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://www.example.com')
const pdf = await page.pdf()
res.contentType("application/pdf")
res.send(pdf)
await browser.close()
})
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`)
})这个应用程序使用 Express 框架创建了一个 Web 服务器,并且使用Puppeteer库将网页转换为 PDF 文件。打开浏览器并输入 http://localhost:3000 就可以看到转换后的 PDF 文件。
三、参数设置
Puppeteer 库可以设置许多参数,以便在转换网页为 PDF 文件的过程中进行定制,例如:页面大小、边距、页眉/页脚、缩放和分页等。下面列出一些常用的参数设置:
- format:网页的页面格式。可以设置为 A4、Letter 等标准页面格式,也可以是自定义的页面尺寸。
- margin:网页的边距。可以设置为上边距、下边距、左边距、右边距等。
- headerTemplate/footerTemplate:可以设置页眉和页脚的 HTML 模板。可以在模板中添加一个类名为page 的元素,在其中添加转换后的页码。
- displayHeaderFooter:可以设置是否显示页眉和页脚。设为true 就显示,设为false 就不显示。
- scale:可以设置网页的缩放比例,以适应输出的 PDF 文件。
- pageRanges:可以设置需要转换的页码范围,以适应多页文档的转换。例如 pageRanges: '1-10' 表示只转换第1到第10页的内容。
下面是一个在转换网页为 PDF 文件时设置一些参数的例子:
const express = require('express')
const puppeteer = require('puppeteer')
const app = express()
const port = 3000
app.get('/', async (req, res) => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://www.example.com')
const pdf = await page.pdf({
format: 'A4',
margin: {
top: '20mm',
right: '20mm',
bottom: '20mm',
left: '20mm'
},
displayHeaderFooter: true,
headerTemplate: '',
footerTemplate:
'',
scale: 0.8
})
res.contentType("application/pdf")
res.send(pdf)
await browser.close()
})
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`)
})这个应用程序设置了 A4 页面格式、20 毫米的边距、显示页眉和页脚、页眉和页脚模板、0.8倍缩放比例,并控制输出的 PDF 文件只包含第 1 到第 10 页。
四、总结
使用 Node.js 将网页转换为 PDF 文件是非常方便和高效的。Puppeteer 库提供了完整的控制 headless Chrome 的功能,可以轻松地控制页面大小、边距、页眉/页脚、缩放和分页等,以满足不同的需求。通过本文的介绍,相信读者对于将网页转换为 PDF 文件的过程有一定的了解,可以在实践中不断完善和优化。











