返回
透过原生 JavaScript 实现网页列印成 PDF 功能:详尽指南
javascript
2024-03-09 08:37:13
透过原生 JavaScript 存取浏览器的列印成 PDF 功能
简介
在瞬息万变的数位时代,线上资料的方便性与可存取性至关重要。如今,列印成 PDF 已成为一种普遍需求,让使用者轻松保存和分享文件。本文将探索如何使用原生 JavaScript 存取浏览器的列印成 PDF 功能,为你的网页开发带来更多便利与可能性。
检测浏览器相容性
实现列印成 PDF 功能的第一步是检测浏览器相容性。目前,仅 Chrome 和 Edge 浏览器支援原生列印成 PDF。以下程式码段可协助你检查浏览器的支援状况:
if (typeof window.printToPDF !== "undefined") {
// 浏览器支援列印成 PDF
}
建立列印选项
如果浏览器支援,下一步便是建立列印选项。window.printToPDF()
方法可产生一个 PrintToPDFOptions
物件,让你设定列印设定。
const printOptions = window.printToPDF();
自定义列印设定
PrintToPDFOptions
物件提供了丰富的设定选项,包括页码范围、方向和边距。以下程式码展示如何设置这些选项:
printOptions.setPages([1, 3, 5]);
printOptions.setOrientation('landscape');
printOptions.setMarginTop(10);
获取 PDF 资料
设定完毕后,你可以使用 toPDF()
方法获取 PDF 资料。该方法返回一个 Promise
物件,解析值为 PDF 资料。
printOptions.toPDF().then((pdfData) => {
// PDF 资料儲存在 pdfData 中
});
下载或储存 PDF
PDF 资料可透过建立链接或使用 Blob
物件进行下载或储存。
- 下载 PDF:
const downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(pdfData);
downloadLink.download = 'my-document.pdf';
document.body.appendChild(downloadLink);
downloadLink.click();
- 储存 PDF:
const blob = new Blob([pdfData], { type: 'application/pdf' });
saveAs(blob, 'my-document.pdf');
範例
以下範例展示如何使用原生 JavaScript 将当前页面列印成 PDF 并下载:
const printOptions = window.printToPDF();
printOptions.toPDF().then((pdfData) => {
const downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(pdfData);
downloadLink.download = 'my-document.pdf';
document.body.appendChild(downloadLink);
downloadLink.click();
});
注意事项
- 仅支援原生列印成 PDF 的浏览器(目前为 Chrome 和 Edge)。
- 安全设定可能限制列印成 PDF 功能。
- 在使用前检查浏览器的相容性和权限。
常见问题解答
-
哪些浏览器支援原生列印成 PDF 功能?
- Chrome 和 Edge
-
如何检查浏览器的相容性?
- 使用程式码
typeof window.printToPDF !== "undefined"
- 使用程式码
-
如何设定页码范围?
- 使用
setPages([1, 3, 5])
方法
- 使用
-
PDF 资料如何储存?
- 可下载或使用
Blob
物件储存
- 可下载或使用
-
原生列印成 PDF 功能有哪些限制?
- 可能受到浏览器安全设定限制