📅  最后修改于: 2023-12-03 15:09:06.538000             🧑  作者: Mango
在实际开发中,我们经常需要将 HTML 页面转换为 PDF 格式,以方便用户下载或打印等操作。本篇文章介绍几种常见的 HTML 转 PDF 的方法。
我们可以使用一些第三方库来进行 HTML 转 PDF 的操作。比较流行的库有 wkhtmltopdf
, phantomjs
, pandoc
等。这些库在不同的平台上表现可能不同,使用前需要注意其兼容性。
wkhtmltopdf
可以将一个 URL 或 HTML 文档转换为 PDF 文档,支持自定义尺寸,分辨率,页面方向,页眉页脚等功能。我们可以在命令行中执行以下命令进行安装:
$ sudo apt-get install wkhtmltopdf
或者下载安装包进行安装:
$ sudo dpkg -i wkhtmltox-0.12.5-1.bionic_amd64.deb
然后使用以下命令将 HTML 文件转换为 PDF 文件:
$ wkhtmltopdf example.html example.pdf
更多用法可以参考 wkhtmltopdf 官网。
phantomjs
可以模拟一个浏览器环境,并对页面进行截图或保存为 PDF 文件。我们可以在命令行中执行以下命令进行安装:
$ sudo apt-get install phantomjs
或者下载安装包进行安装:
$ sudo dpkg -i phantomjs-2.1.1-linux-x86_64.deb
然后使用以下命令将 HTML 文件转换为 PDF 文件:
$ phantomjs rasterize.js example.html example.pdf
rasterize.js 的内容如下:
var page = require('webpage').create();
var system = require('system');
if (system.args.length !== 3) {
console.log('Usage: rasterize.js URL filename');
phantom.exit(1);
} else {
var url = system.args[1];
var filename = system.args[2];
page.viewportSize = { width: 600, height: 600 };
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
window.setTimeout(function () {
page.render(filename);
phantom.exit();
}, 200);
}
});
}
更多用法可以参考 phantomjs 官网。
pandoc
是一个通用的文档转换工具,支持将 HTML、Markdown、LaTeX 等文档格式转换为 PDF、Word、EPUB 等格式。我们可以在命令行中执行以下命令进行安装:
$ sudo apt-get install pandoc
然后使用以下命令将 HTML 文件转换为 PDF 文件:
$ pandoc example.html -o example.pdf
更多用法可以参考 pandoc 官网。
除了使用第三方库外,我们还可以使用一些在线工具将 HTML 页面转换为 PDF。这些工具通常有限制,转换速度可能较慢,但使用较为简单。
网页根据 是一个免费的在线 HTML 转 PDF 工具。我们只需将 HTML 代码粘贴到网页中,填写一些选项后即可转换。转换后的 PDF 可以直接下载保存。
PDFShift 是一个收费的在线 HTML 转 PDF 工具。使用前需要注册并购买相应的套餐。转换速度较快,支持自定义样式,但免费版会带有水印。
如果对已有的库或工具不满意,我们还可以自定义实现 HTML 转 PDF。常用的方法是使用 pdfkit
和 node-canvas
等库。其中,pdfkit
是一个用来生成 PDF 文件的 Node.js 库,node-canvas
是一个用于绘制 Canvas 图像的库。
pdfkit
可以用来创建 PDF 文档,我们可以在 HTML 页面中引入该库,并使用 JavaScript 将页面内容以类似于手写 DOM 的方式转换为 PDF 文件。具体实现方法可以参考 pdfkit 官网。
node-canvas
可以为 pdfkit
提供绘制图像的功能,我们可以使用 node-canvas
绘制出 HTML 页面,并生成 PDF 文件。具体实现方法可以参考 node-canvas 官网。
本文介绍了几种常用的 HTML 转 PDF 的方法,包括使用第三方库、在线工具和自定义实现。在使用过程中,我们需要根据实际情况选择合适的方式进行转换。