什么是 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 更为合适。