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)。 [![Maven Central](https://img.shields.io/maven-central/v/com.github.librepdf/openpdf.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/com.github.librepdf/openpdf) ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bd5a9ed39c121317.svg) [![License (LGPL version 2.1)](https://img.shields.io/badge/license-GNU%20LGPL%20version%202.1-blue.svg?style=flat-square)](http://opensource.org/licenses/LGPL-2.1) [![License (MPL)](https://img.shields.io/badge/license-Mozilla%20Public%20License-yellow.svg?style=flat-square)](http://opensource.org/licenses/MPL-2.0) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/791d40a437f64c77a0a802ae597a960c)](https://app.codacy.com/gh/LibrePDF/OpenPDF/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2f43df45b0121319.svg)](https://github.com/LibrePDF/OpenPDF/actions/workflows/codeql.yml) [![CodeFactor](https://www.codefactor.io/repository/github/librepdf/openpdf/badge)](https://www.codefactor.io/repository/github/librepdf/openpdf) [![Join the chat at https://gitter.im/LibrePDF/OpenPDF](https://badges.gitter.im/LibrePDF/OpenPDF.svg)](https://gitter.im/LibrePDF/OpenPDF) ![Java 21](https://img.shields.io/badge/Java-21-blue?logo=java&logoColor=white) ![Java 24](https://img.shields.io/badge/Java-24-blue?logo=java&logoColor=yellow) ![Java 25](https://img.shields.io/badge/Java-25-blue?logo=java&logoColor=blue) [![Kotlin](https://img.shields.io/badge/Kotlin-Supported-ADD8E6?logo=kotlin&logoColor=white)](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转图片, 后端开发, 域名枚举, 开源库, 报表工具, 搜索引擎爬虫, 文本提取, 文档处理, 漏洞验证, 电子文档, 表格创建