JavaScript 中的 PDF 生成:PDFKit 库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 PDFKit?

PDFKit 是一个强大的 JavaScript(Node.js)PDF 文档生成库。它允许创建包含文本、图片、表格、矢量图形和注释的复杂多页 PDF 文件。PDFKit 完全实现了 PDF 1.7 规范,并且不依赖外部工具,使其成为 Node.js 服务器端应用的理想选择。

为什么需要在 JavaScript 中生成 PDF?

服务器端 PDF 生成在多种场景下都有需求:创建发票和收据、生成报告、制作证书、将数据导出为便携格式。PDFKit 可以完全在 Node.js 环境中工作,无需浏览器,从而实现这些流程的自动化。您可以动态创建文档,插入数据库中的数据,添加水印和签名。

安装 PDFKit

该库的安装非常简单,通过 npm 即可完成:

npm install pdfkit

同时建议安装 pdfkit-table 以便于处理表格,或安装 svg-to-pdfkit 用于插入 SVG 图形。

PDFKit 的主要功能

  • 文本与字体:支持 Unicode、嵌入字体、对齐、换行、字间距调整。
  • 矢量图形:线条、矩形、圆形、贝塞尔曲线、渐变。
  • 图片:插入 JPEG、PNG、SVG(通过插件)。
  • 表格:创建具有自适应列宽、样式和标题的表格。
  • 注释:超链接、书签、元数据(作者、主题)、水印。
  • 页面:添加、设置尺寸、方向、边距、页码。

JavaScript (Node.js) 示例代码

const PDFDocument = require('pdfkit');const fs = require('fs');

// 创建文档const doc = new PDFDocument();

// 保存到文件const stream = fs.createWriteStream('output.pdf');doc.pipe(stream);

// 添加标题doc.fontSize(25).text('你好,世界!', 100, 100);

// 添加自动换行文本doc.fontSize(12).text('这是使用 PDFKit 创建的 PDF 示例。', 100, 150);

// 绘制线条doc.moveTo(100, 200).lineTo(400, 200).stroke();

// 插入图片(如果有)// doc.image('path/to/image.png', 100, 250, {width: 200});

// 新页面doc.addPage();doc.fontSize(20).text('第 2 页');

// 添加表格(通过 pdfkit-table)// doc.table({ headers: ['姓名', '年龄'], rows: [['安娜', 25], ['伊万', 30]] });

// 完成文档doc.end();

stream.on('finish', () => { console.log('PDF 创建成功');});

何时使用 PDFKit?

PDFKit 适用于需要完全控制 PDF 内容的场景:从简单的文本文档到包含图表、表格和水印的复杂报告。如果不需要 HTML 排版,它比 Puppeteer 更快更轻量。当您在 Node.js 服务器上创建文档并希望避免启动浏览器时,请使用 PDFKit。对于需要 HTML 转 PDF 的简单任务,Puppeteer 更为合适。

推荐