JS HTML转PDF
介绍
在 Web 开发中,有时候我们需要将 HTML 页面或者特定内容以 PDF 格式保存或传递。HTML 转 PDF 是一种流行的需求,它可以实现将网页内容转换为可打印的 PDF 文档。
在本文中,我们将探讨如何使用 JavaScript 将 HTML 转为 PDF。我们将介绍几种常用的方法,并提供示例代码和运行结果。
方法一:使用jsPDF库转换
jsPDF 是一个流行的 JavaScript 库,可以帮助我们在客户端将 HTML 转成 PDF。它提供了丰富的 API,可以灵活地定制 PDF 输出。
安装jsPDF库
首先,我们需要下载和引入 jsPDF 库。可以通过以下方式引入:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
HTML转PDF示例代码
以下是一个使用 jsPDF 将 HTML 转为 PDF 的示例代码:
// 创建一个新的PDF文档
var doc = new jsPDF();
// 获取HTML元素
var element = document.getElementById('html-content');
// 将HTML内容转为PDF格式
doc.html(element, {
callback: function (pdf) {
// 保存PDF文件
pdf.save('output.pdf');
}
});
运行结果
上述代码运行后,将根据指定的 HTML 元素 html-content
的内容生成一个名为 output.pdf
的 PDF 文件。
方法二:使用Puppeteer库转换
Puppeteer 是一个由 Google 开发的 Node.js 库,提供了控制 Chrome 或 Chromium 浏览器的 API。我们可以使用 Puppeteer 将网页渲染成 PDF。
安装Puppeteer库
首先,我们需要下载和引入 Puppeteer 库。可以通过以下方式安装:
npm install puppeteer
HTML转PDF示例代码
以下是一个使用 Puppeteer 将 HTML 转为 PDF 的示例代码:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 导航到要转换为PDF的页面
await page.goto('https://example.com');
// 指定PDF的输出路径和文件名
await page.pdf({ path: 'output.pdf', format: 'A4' });
// 关闭浏览器
await browser.close();
})();
运行结果
上述代码运行后,将使用 Puppeteer 打开指定的页面,并将其渲染为 PDF 格式,保存为 output.pdf
文件。
方法三:使用在线服务转换
除了使用 JavaScript 库进行转换外,还有一种简单的方法就是使用在线服务将 HTML 转为 PDF。这些在线服务通常提供 API 接口,可以通过发送 HTTP 请求转换 HTML。
目前有许多在线服务可以完成这项任务,包括但不限于 pdfcrowd
、pdfshift
、pdf4me
等等。我们以 pdfcrowd
为例,介绍如何使用它来完成 HTML 到 PDF 的转换。
以下是使用 pdfcrowd
进行 HTML 转 PDF 的示例代码:
const axios = require('axios');
const fs = require('fs');
const htmlContent = `
<html>
<head>
<title>PDF Example</title>
</head>
<body>
<h1>Hello, World!</h1>
This is an example HTML content.
</body>
</html>
`;
(async () => {
try {
// 发送 POST 请求到pdfcrowd API
const response = await axios.post('https://pdfcrowd.com/api/html/to/pdf', {
username: 'your-username',
key: 'your-api-key',
html: htmlContent
}, {
responseType: 'stream'
});
// 将返回的二进制流保存成PDF文件
response.data.pipe(fs.createWriteStream('output.pdf'));
} catch (error) {
console.error(error);
}
})();
上述代码中,我们首先需要注册并登录 pdfcrowd
并获取 API Key。然后,通过发送 POST 请求到 https://pdfcrowd.com/api/html/to/pdf
,将 HTML 内容传递给 API,API 会将其转换为 PDF 并返回二进制流。
运行结果
上述代码运行后,将生成一个名为 output.pdf
的 PDF 文件。
结论
本文介绍了三种将 HTML 转为 PDF 的方法:使用 jsPDF 库、使用 Puppeteer 库以及使用在线服务。每种方法都有其优缺点,具体选择取决于项目需求和个人喜好。