LibrePDF/OpenPDF
GitHub: LibrePDF/OpenPDF
OpenPDF 是一个基于 Java 的开源 PDF 处理库,支持创建、编辑、渲染、加密 PDF 文档及 HTML 转 PDF 功能,采用 LGPL/MPL 双许可便于商业项目集成使用。
Stars: 4196 | Forks: 690
# OpenPDF 是一个开源的 Java PDF 库
OpenPDF 是一个开源的 Java 库,用于创建、编辑、渲染和加密 PDF 文档,以及
从 HTML 生成 PDF。它根据 LGPL 和 MPL 开源许可证授权。
我们欢迎其他开发者的贡献。请随时向此 GitHub
仓库提交 pull-requests 和错误报告。
## OpenPDF 3.0.2 版本发布于 2026-02-28
在此获取 3.0.2 版本:https://github.com/LibrePDF/OpenPDF/releases/tag/3.0.2 其他版本
- [OpenPDF 1.4.2 (发布于 2024-03-30)](https://github.com/LibrePDF/OpenPDF/releases/tag/1.4.2)
- [以前的版本](https://github.com/LibrePDF/OpenPDF/releases)
## 功能
OpenPDF 的功能包括:
* [Openpdf](openpdf-core) 创建 PDF:您可以使用 OpenPDF 从头开始创建新的 PDF 文档。
* 操作现有 PDF:OpenPDF 允许您通过添加或删除页面、修改文本等方式修改现有的 PDF 文档。
* [Openpdf-html](openpdf-html) 使用 OpenPDF-html(Flying Saucer 的一个分支)从 HTML 创建 PDF 文件。
* [Openpdf-renderer](openpdf-renderer) 使用 openpdf-render 将 PDF 文件渲染为图像。
* [Openpdf-kotlin](openpdf-kotlin) 用于使用 Kotlin 轻松创建 PDF 文件的 Kotlin 模块。
* 文本和字体支持:您可以使用各种字体和样式向 PDF 文档添加文本,并从 PDF 文件中提取文本。
* 图形和图像:OpenPDF 支持将图像和图形添加到 PDF 文件中。
* 表格支持:该库有助于在 PDF 文档中创建表格。
* 加密:您可以出于安全目的对 PDF 文档进行加密。
* 页面布局:OpenPDF 允许您设置页面大小、方向和其他布局属性。
* PDF 2.0 支持 (ISO 32000-2)。
[](https://central.sonatype.com/artifact/com.github.librepdf/openpdf)

[](http://opensource.org/licenses/LGPL-2.1)
[](http://opensource.org/licenses/MPL-2.0)
[](https://app.codacy.com/gh/LibrePDF/OpenPDF/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://github.com/LibrePDF/OpenPDF/actions/workflows/codeql.yml)
[](https://www.codefactor.io/repository/github/librepdf/openpdf)
[](https://gitter.im/LibrePDF/OpenPDF)



[](https://github.com/LibrePDF/OpenPDF/tree/master/openpdf-kotlin)
## 将 OpenPDF 用作 Maven 依赖
将此添加到您的 pom.xml 文件以使用最新版本的 OpenPDF:
```
com.github.librepdf
openpdf
3.0.1
```
## 许可证
OpenPDF 使用双重许可:使用该库时,您可以选择 Mozilla Public License Version 2.0
或 GNU Lesser General Public License 2.1。OpenPDF 是 iText 的 LGPL/MPL 开源继承者,并且基于 iText
4 svn tag 的一些分支。
OpenPDF 许可的 SPDX 许可证标识符是 `MPL-2.0 OR LGPL-2.1+`
[GNU Lesser General Public License (LGPL), Version 2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1)
[Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/2.0/)
您也可以在 https://itsfoss.com/open-source-licenses-explained/ 找到关于这些许可证的很好的解释
我们希望 OpenPDF 仅包含根据 LGPL 和 MPL 许可证一致许可的源代码。
这也意味着对项目的任何新贡献必须仅具有双重 LGPL 和
MPL 许可证。
[Openpdf-html](openpdf-html) 和 [Openpdf-renderer](openpdf-renderer) 仅根据 GNU Lesser General Public
License 2.1 许可。
## 文档
- [示例](pdf-toolbox/src/test/java/org/openpdf/examples)
- [JavaDoc](https://javadoc.io/doc/com.github.librepdf/openpdf/latest/index.html)
- [教程](https://github.com/LibrePDF/OpenPDF/wiki/Tutorial) (wiki,编写中)
- [从 iText 迁移,TIFF 支持](https://github.com/LibrePDF/OpenPDF/wiki/Migrating-from-iText-2-and-4)
### Openpdf-html – HTML 转 PDF
[Openpdf-html](openpdf-html):直接从 HTML/CSS 内容生成 PDF。
非常适合从 Web 模板创建带有样式的报告、发票和文档。
**Maven 构件:** `com.github.librepdf:openpdf-html`
### Openpdf-renderer – PDF 渲染
[Openpdf-renderer](openpdf-renderer):将 PDF 页面渲染为图像或在 Java webapp/Swing/JavaFX
应用程序中显示它们。
对于预览、缩略图或在 GUI 中嵌入 PDF 非常有用。
**Maven 构件:** `com.github.librepdf:openpdf-renderer`
## 安全须知
应用程序开发人员有责任确保传递给 OpenPDF 的所有输入都是可信的、
经过清理且安全的。
OpenPDF 不执行输入验证或强制沙箱处理。有关重要的安全指南和常见风险,
请阅读我们的[安全策略](Security.md)。
## 背景
OpenPDF 是具有 LGPL 和 MPL 许可证的开源软件。它是 iText 版本 4 的分支,更
具体地说是 iText svn tag 4.2.0,该版本曾公开托管在 sourceforge 上,源代码中包含 LGPL 和 MPL 许可证
头文件,并且 svn 仓库中包含 LGPL 和 MPL 许可证文档。从 iText
版本 5.0 开始,开发人员已转向 AGPL,以提高其销售
商业许可证的能力。
OpenPDF-html 是 Flying Saucer 的分支,于 2025 年 6 月分叉,项目始于 2004 年。
openpdf-renderer 是 PDFRenderer 的分支,项目由 Sun Labs 于 2007 年启动。
OpenPDF-core 是 iText 的分支,于 2016 年 10 月分叉,iText 始于 2000 年。
GitHub 上的 OpenPDF 祖先(按分叉顺序):
1. [@rtfarte](https://github.com/rtfarte) / [OpenPDF](https://github.com/rtfarte/OpenPDF) - LibrePDF/OpenPDF
的父级
2. [@kulatamicuda](https://github.com/kulatamicuda)
/ [iText-4.2.0](https://github.com/kulatamicuda/iText-4.2.0)
3. [@daviddurand](https://github.com/daviddurand)
/ [iText-4.2.0](https://github.com/daviddurand/iText-4.2.0)
4. [@ymasory](https://github.com/ymasory) / [iText-4.2.0](https://github.com/ymasory/iText-4.2.0) -
GitHub 上的原始父级
## Android
OpenPDF 可与 Android 一起使用,更多信息
请见:[Android-support](https://github.com/LibrePDF/OpenPDF/wiki/Android-support)
### 编码风格
- 代码缩进风格为 4 个空格。最大行长度为 120 个字符。
- 通常尽量保持您正在修改的文件中的编码风格。
## 依赖项
### 必需的依赖项
我们现在有不同版本的 OpenPDF,它们需要不同版本的 Java:
- 2.1.x 分支(及更高版本)需要 Java 21 或更高版本。
- 2.0.x 分支需要 Java 17 或更高版本。
- 1.4.x 分支需要 Java 11 或更高版本。
- 1.3.x 分支需要 Java 8 或更高版本。
### OpenPDF Java 包名从 com.lowagie 更改为 org.openpdf
OpenPDF 3.0 版本使用新的 org.openpdf 包名。
### UTF-8 字体
从 1.3.21 版本开始,UTF-8 Liberation 字体移至其自己的模块,以减小 OpenPDF
jar 的大小。如果您想使用捆绑的 UTF-8 字体,请将以下依赖项添加到您的项目
并使用类 `org.librepdf.openpdf.fonts.Liberation`。
```
com.github.librepdf
openpdf-fonts-extra
${openpdf.version}
```
### 支持复杂的字形替换/连字替换
OpenPDF 支持字形替换,这是正确渲染字体连字替换要求所需的。
需要 FOP 依赖项才能启用此功能。有关
详细信息,请参阅以下 wiki:[wiki](https://github.com/LibrePDF/OpenPDF/wiki/Multi-byte-character-language-support-with-TTF-fonts)
### 支持 OpenType 布局、字形定位、重排和替换
OpenPDF 支持 OpenType 布局、字形定位、重排和替换,例如,这对于
重音符号的正确定位、非拉丁语和从右到左脚本的渲染是必需的。OpenPDF 支持 DIN 91379。
请参阅:[wiki](https://github.com/LibrePDF/OpenPDF/wiki/Accents,-DIN-91379,-non-Latin-scripts)
### 可选
- [BouncyCastle](https://www.bouncycastle.org/)(BouncyCastle 用于对 PDF 文件进行签名,因此它是一个推荐的
依赖项)
- Provider(`org.bouncycastle:bcprov-jdk18on` 或 `org.bouncycastle:bcprov-ext-jdk18on`,具体取决于
您使用的算法)
- PKIX/CMS(`org.bouncycastle:bcpkix-jdk18on`)
- Apache FOP(`org.apache.xmlgraphics:fop`)
- 请参考我们的 [pom.xml](pom.xml) 以查看需要什么版本。
## 鸣谢
请参阅 [Contributors.md](Contributors.md)。
标签:404团队, Flying Saucer, HTML转PDF, Java工具库, JS文件枚举, Kotlin, LGPL, LibrePDF, Maven, MPL, OpenPDF, PDF, PDF 2.0, PDF加密, PDF渲染, PDF生成, PDF编辑, PDF转图片, 后端开发, 域名枚举, 开源库, 报表工具, 搜索引擎爬虫, 文本提取, 文档处理, 漏洞验证, 电子文档, 表格创建