Repolode
Lulzx

Lulzx/tinypdf

零依赖的极简 TypeScript PDF 生成库,支持文字、矩形、线条、JPEG 图片和链接。

Star
1,923
Fork
76
未关闭 Issue
0
最近提交
2个月前

这是什么?

tinypdf 是一个面向 TypeScript 和 JavaScript 的小型 PDF 生成库,无任何依赖,代码不到 400 行,压缩后约 3.3 KB。它刻意不支持自定义字体、PNG/SVG、表单、加密和 HTML 转 PDF,只专注于在页面上放置文字和图片。

文档通过回调式 API 构建:创建页面后可绘制文字、矩形、线条、JPEG 图片和可点击链接,调用 build() 得到 Uint8Array,或调用 buildStream() 以 ReadableStream 形式输出大文件。markdown() 可将包含标题、列表和分隔线的简单 Markdown 转为分页 PDF,measureText() 可按点数计算文字宽度。

它适合生成版式固定、使用 Helvetica 字体即可满足需求的发票、收据、报表、票据和证书。如需 Unicode 字体或更复杂的 PDF 功能,可以考虑 jsPDF 或 pdf-lib。

核心功能

  • 01使用 Helvetica 字体绘制文字,可设置字号、十六进制颜色和对齐方式。
  • 02支持在页面上添加填充矩形、线条和 JPEG 图片。
  • 03可创建带可选下划线的可点击链接。
  • 04支持多页文档和自定义页面尺寸。
  • 05可将简单的 Markdown 转换为分页 PDF。
  • 06通过 buildStream() 以流的方式输出大型文档。

适用场景

  • 生成版式固定的发票和收据。
  • 制作带有logo和签名图片的票据或证书。
  • 在 Node、Bun 或服务端 JavaScript 应用中导出数据报表为 PDF。
  • 在不引入较重依赖的前提下,通过 HTTP 响应返回 PDF 文件。

快速上手

  1. 1

    从 npm 安装该包

    npm install tinypdf
  2. 2

    导入 pdf,创建文档,添加带文本和图形的页面,然后写入文件

  3. 3

    使用 Bun 运行任意示例

    bun examples/executive-report.ts

使用前须知

  • 文本仅支持内置 Helvetica 字体和 WinAnsi 编码,不支持 Unicode 或自定义字体。
  • 图片仅支持 JPEG,不支持 PNG、GIF 和 SVG。
  • 不包含表单、加密、压缩和 HTML 转 PDF 等功能。

标签

常见问题

tinypdf 是什么?
零依赖的极简 TypeScript PDF 生成库,支持文字、矩形、线条、JPEG 图片和链接。 tinypdf 是一个面向 TypeScript 和 JavaScript 的小型 PDF 生成库,无任何依赖,代码不到 400 行,压缩后约 3.3 KB。它刻意不支持自定义字体、PNG/SVG、表单、加密和 HTML 转 PDF,只专注于在页面上放置文字和图片。
tinypdf 可以免费使用吗?用的什么许可证?
tinypdf 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
tinypdf 还在维护吗?
半年内有更新。tinypdf 最近一次提交是在 2026年8月13日。
tinypdf 适合用来做什么?
生成版式固定的发票和收据。 制作带有logo和签名图片的票据或证书。 在 Node、Bun 或服务端 JavaScript 应用中导出数据报表为 PDF。 在不引入较重依赖的前提下,通过 HTTP 响应返回 PDF 文件。
tinypdf 怎么安装和运行?
从 npm 安装该包: npm install tinypdf 导入 pdf,创建文档,添加带文本和图形的页面,然后写入文件 使用 Bun 运行任意示例: bun examples/executive-report.ts
在哪里获取 tinypdf?
源代码和安装说明在 GitHub 上:https://github.com/Lulzx/tinypdf

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目