TypeScript 中的 PDF 生成:Node.js 的库与工具

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

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

开始课程

TypeScript 中的 PDF 生成:库与工具概览



创建 PDF 文档是 Web 开发中的常见任务之一。TypeScript 凭借其严格的类型检查和现代特性,使得在客户端和服务器端都能编写可靠的 PDF 生成代码。本文将介绍 TypeScript 中用于生成 PDF 的流行库与工具、它们的特点以及使用示例。



1. PDFKit — 强大的服务器端库



PDFKit 是在 Node.js 上创建 PDF 最流行的库之一。它提供对文档结构的完全控制,支持字体、图像、注释和矢量图形。PDFKit 在服务器端运行,非常适合生成复杂的报告、发票或证书。



安装与示例:



npm install pdfkit @types/pdfkit


import PDFDocument from 'pdfkit';import * as fs from 'fs';

const doc = new PDFDocument();

doc.pipe(fs.createWriteStream('output.pdf'));

doc.fontSize(25).text('你好,世界!', 100, 100);doc.fontSize(12).text('这是使用 PDFKit 和 TypeScript 生成的 PDF。', 100, 150);

doc.end();


PDFKit 非常适合:



  • 在服务器端创建 PDF(Express, NestJS)
  • 处理自定义字体和编码(包括西里尔字母)
  • 添加图像、表格和图形基元


2. jsPDF — 客户端 PDF 生成



jsPDF 是一个客户端库,用于直接在浏览器中创建 PDF。它易于使用,支持文本、图像、注释和基本形状。通过 DefinitelyTyped 提供 TypeScript 类型。



安装:



npm install jspdf @types/jspdf


在浏览器中生成 PDF 的示例:



import { jsPDF } from 'jspdf';

const doc = new jsPDF();

doc.text('你好,TypeScript!', 10, 10);doc.text('这是在浏览器中创建的 PDF。', 10, 20);

doc.save('document.pdf');


jsPDF 适用于:



  • 在客户端下载 PDF(报告、收据)
  • 无需复杂布局的简单文档
  • 快速原型开发


3. Puppeteer — 从 HTML 生成



Puppeteer 是一个用于控制 Chrome/Chromium 浏览器的库。它可以将 HTML 页面转换为 PDF,并完整保留样式、字体和布局。非常适合创建复杂的文档、报告和名片。



安装:



npm install puppeteer


将 HTML 转换为 PDF 的示例:



import puppeteer from 'puppeteer';

async function generatePDF(html: string, outputPath: string): Promise<void> { const browser = await puppeteer.launch(); const page = await browser.newPage();

await page.setContent(html, { waitUntil: 'networkidle0' }); await page.pdf({ path: outputPath, format: 'A4' });

await browser.close();}

// 使用const htmlContent = `<h1 style="color: blue;">标题</h1><p>带有 HTML 样式的文本</p>`;generatePDF(htmlContent, 'output.pdf');


Puppeteer 是以下场景的理想选择:



  • 将复杂的 HTML 模板转换为 PDF
  • 创建带有 CSS 样式、Flexbox、Grid 的 PDF
  • 在服务器端生成 PDF,并完全控制外观


4. pdf-lib — 轻量且快速的库



pdf-lib 是一个用于创建和修改 PDF 文档的现代库,无外部依赖。它既可在 Node.js 中运行,也可在浏览器中运行。支持字体、图像、表单和注释。



安装:



npm install pdf-lib
\

推荐