如何使用 Node.js 进行 PDF 生成

阅读时长 4 分钟读完

在前端开发中,经常需要将数据以 PDF 格式导出,用来生成打印版或存档版的文件。本文介绍如何使用 Node.js 进行 PDF 生成,包括安装相关模块、生成 PDF 文件、自定义 PDF 样式等。

1. 安装相关模块

Node.js 已经具备了一些生成 PDF 的功能,如 pdfkit 模块可以像 HTML 一样生成 PDF 文件。但是,为了更好地控制 PDF 样式,可以使用 puppeteer 模块来渲染 PDF 文件。

首先需要安装 puppeteer 模块:

2. 生成 PDF 文件

生成 PDF 文件需要通过 puppeteer 模块的 Page.pdf() 方法来实现。下面是一个简单的示例代码,将 http://example.com 渲染成 PDF 文件 example.pdf

-- -------------------- ---- -------
----- --------- - ---------------------

------ -- -- -
  ----- ------- - ----- -------------------
  ----- ---- - ----- ------------------
  ----- --------------------------------
  ----- ---------- ----- ------------- ---

  ----- ----------------
-----

代码中,首先启动一个浏览器实例,创建一个页面并跳转到 http://example.com。然后使用 page.pdf() 方法将页面输出为 PDF 文件,并指定文件路径 example.pdf。最后关闭浏览器实例。

3. 自定义 PDF 样式

可以在 page.pdf() 方法中传入一些可选参数来定义 PDF 样式。下面是一些常用的参数:

  • path:生成的 PDF 文件路径
  • format:PDF 页面尺寸,如 A4、Letter、Legal 等,默认为 Letter
  • margin:PDF 页边距,支持单位像素和英寸,如 { top: '10px', right: '10px', bottom: '10px', left: '10px' }
  • scale:PDF 缩放比例,默认为 1,可改变 PDF 页面尺寸和字体大小
  • displayHeaderFooter:是否在 PDF 页面显示页眉和页脚
  • headerTemplatefooterTemplate:自定义 PDF 页面的页眉和页脚

下面是一个自定义 PDF 样式的示例代码:

-- -------------------- ---- -------
----- --------- - ---------------------

------ -- -- -
  ----- ------- - ----- -------------------
  ----- ---- - ----- ------------------
  ----- --------------------------------
  ----- ----------
    ----- --------------
    ------- -----
    ------- - ---- ------ ------ ------ ------- ------ ----- ----- --
    ------ ----
    -------------------- -----
    --------------- ------ ----------------- ---------- ----- -----------------------------------
    --------------- ------ ----------------- --------------- -- ------- --- ------------------
  ---

  ----- ----------------
-----

代码中,将 PDF 页面尺寸设置为 A4,页边距设置为 1cm,缩放比例为 0.8。并且显示 PDF 页面的页眉和页脚,同时自定义了页眉和页脚的内容。

总结

使用 Node.js 进行 PDF 生成是一个非常实用的工具,在前端开发中有很多用途。本文介绍了如何安装相关模块、生成 PDF 文件以及自定义 PDF 样式。希望对读者有帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64681bd1968c7c53b08504c7

纠错
反馈