返回

透过原生 JavaScript 实现网页列印成 PDF 功能:详尽指南

javascript

透过原生 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 功能。
  • 在使用前检查浏览器的相容性和权限。

常见问题解答

  1. 哪些浏览器支援原生列印成 PDF 功能?

    • Chrome 和 Edge
  2. 如何检查浏览器的相容性?

    • 使用程式码 typeof window.printToPDF !== "undefined"
  3. 如何设定页码范围?

    • 使用 setPages([1, 3, 5]) 方法
  4. PDF 资料如何储存?

    • 可下载或使用 Blob 物件储存
  5. 原生列印成 PDF 功能有哪些限制?

    • 可能受到浏览器安全设定限制