OpenPDF is an open-source Java library for creating, editing, rendering, and encrypting PDF documents, as well as generating PDFs from HTML. It is licensed under the LGPL and MPL.
| Files | Last commit | Last update |
|---|---|---|
| 3 months ago | ||
| 3 months ago | ||
| 6 months ago | ||
| 2 years ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 1 month ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 2 years ago | ||
| 1 year ago | ||
| 2 years ago | ||
| 4 months ago | ||
| 6 months ago | ||
| 1 year ago | ||
| 3 months ago | ||
| 1 year ago | ||
| 1 month ago | ||
| 6 months ago | ||
| 4 months ago | ||
| 4 months ago | ||
| 1 month ago |
OpenPDF:一款用于 PDF 文件的开源 Java 库
OpenPDF 是一个开源 Java 库,用于创建、编辑、渲染和加密 PDF 文档,还能从 HTML 生成 PDF。它采用 LGPL 和 MPL 开源许可证。 我们欢迎其他开发者参与贡献。欢迎随时向此 GitHub 仓库提交拉取请求和错误报告。
功能特性
OpenPDF 的功能特性包括:
- Openpdf 创建 PDF:您可以使用 OpenPDF 从头开始创建新的 PDF 文档。
- 处理现有 PDF:OpenPDF 允许您修改现有 PDF 文档,例如添加或删除页面、修改文本等。
- Openpdf-html 从 HTML 创建 PDF 文件,使用 OpenPDF-html,它是 Flying Saucer 的一个分支。
- Openpdf-renderer 使用 openpdf-render 将 PDF 文件渲染为图像。
- Openpdf-kotlin Kotlin 模块,便于使用 Kotlin 创建 PDF 文件。
- 文本和字体支持:您可以使用各种字体和样式向 PDF 文档添加文本,并从 PDF 文件中提取文本。
- 图形和图像:OpenPDF 支持向 PDF 文件添加图像和图形。
- 表格支持:该库有助于在 PDF 文档中创建表格。
- 加密:您可以对 PDF 文档进行加密以确保安全。
- 页面布局:OpenPDF 允许您设置页面大小、方向和其他布局属性。
- 支持 PDF 2.0(ISO 32000-2)。
- Brotli 流压缩(
/BrotliDecode),用于创建和读取使用 Brotli 压缩的 PDF 流——详见 Brotli 压缩。
获取 OpenPDF
获取 OpenPDF 的最新版本。
将 OpenPDF 用作 Maven 依赖
将以下内容添加到您的 pom.xml 文件中,以使用 OpenPDF 的最新版本:
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>3.0.5</version>
</dependency>
许可协议
OpenPDF 采用双重许可:使用本库时,您可以选择 Mozilla 公共许可证 2.0 版或 GNU 宽通用公共许可证 2.1 版。OpenPDF 是 iText 的 LGPL/MPL 开源继任者,基于 iText 4 svn 标签的部分分支开发而成。
OpenPDF 许可的 SPDX 许可证标识符为 MPL-2.0 OR LGPL-2.1+
简要说明参见 https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
您还可以在 https://itsfoss.com/open-source-licenses-explained/ 找到这些许可证的精彩解读。
我们希望 OpenPDF 的源代码仅统一采用 LGPL 和 MPL 许可证。这也意味着,对本项目的任何新贡献都必须仅采用双重 LGPL 和 MPL 许可证。
Openpdf-html 和 Openpdf-renderer 仅采用 GNU 宽通用公共许可证 2.1 版进行许可。
文档
- 示例
- JavaDoc
- 教程(维基,开发中)
- 从 iText 迁移,TIFF 支持
Openpdf-html – HTML 转 PDF
Openpdf-html:直接从 HTML/CSS 内容生成 PDF。
非常适合从网页模板创建带样式的报告、发票和文档。
Maven 构件: com.github.librepdf:openpdf-html
Openpdf-renderer – PDF 渲染
Openpdf-renderer:将 PDF 页面渲染为图像,或在 Java Web 应用/Swing/JavaFX 应用中显示。
适用于预览、缩略图或在图形用户界面中嵌入 PDF。
Maven 构件: com.github.librepdf:openpdf-renderer
安全注意事项
应用程序开发人员有责任确保传入 OpenPDF 的所有输入都是可信、经过清理且安全的。 OpenPDF 不执行输入验证或强制实施沙箱机制。有关重要的安全准则和常见风险,请阅读我们的安全政策。
背景
OpenPDF 是一款采用 LGPL 和 MPL 许可的开源软件。它是 iText 4 版本的分支,更具体地说,是 iText 的 svn 标签 4.2.0 的分支,该版本曾公开托管在 SourceForge 上,源代码中包含 LGPL 和 MPL 许可头文件,svn 仓库中也包含 LGPL 和 MPL 许可文档。从 iText 5.0 版本开始,开发人员转而采用 AGPL 许可,以增强其销售商业许可的能力。
OpenPDF-html 是 Flying Saucer 的分支,于 2025 年 6 月分支创建,Flying Saucer 项目始于 2004 年。 openpdf-renderer 是 PDFRenderer 的分支,PDFRenderer 项目由 Sun Labs 于 2007 年启动。 OpenPDF-core 是 iText 的分支,于 2016 年 10 月分支创建,iText 始于 2000 年。
GitHub 上的 OpenPDF 前身(按分支顺序):
- @rtfarte / OpenPDF - LibrePDF/OpenPDF 的父项目
- @kulatamicuda / iText-4.2.0
- @daviddurand / iText-4.2.0
- @ymasory / iText-4.2.0 - GitHub 上最初的父项目
Android
OpenPDF 可用于 Android,更多信息请参见:Android 支持
贡献
我们欢迎其他开发人员的贡献。请确保您的贡献可以采用双 LGPL 和 MPL 许可进行发布。特别是,提交给 OpenPDF 项目的拉取请求必须只包含您自己编写的代码。GPL 或 AGPL 许可的代码将不被接受。
要向 OpenPDF 项目贡献代码,您的 GitHub 账户必须包含您的真实姓名,以便我们验证您的身份。这是为了确保 OpenPDF 项目的信任、安全和完整性,并防止诸如“XZ Utils 后门”之类的安全事件。了解贡献者的真实姓名还有助于识别和防止利益冲突。
更多详情:贡献指南
编码风格
- 代码缩进风格为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类。
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf-fonts-extra</artifactId>
<version>${openpdf.version}</version>
</dependency>
Brotli4j
Brotli4j 是支持 Brotli 流压缩功能的必要依赖项。 https://github.com/hyperxpro/Brotli4j/
支持复杂字形替换/连字替换
OpenPDF 支持字形替换,这是正确渲染字体连字替换所必需的功能。 启用此功能需要 FOP 依赖项。有关详细信息,请参考以下 Wiki:wiki
支持 OpenType 布局、字形定位、重排和替换
OpenPDF 支持 OpenType 布局、字形定位、重排和替换,例如,这对于正确定位重音符号、渲染非拉丁文字符以及从右到左书写的文字是必需的。OpenPDF 支持 DIN 91379 标准。 详见:wiki
Brotli 压缩
OpenPDF 能够读取和写入采用 Brotli 压缩的 PDF 流——在 PDF 中表现为 /BrotliDecode 过滤器,该过滤器正通过 ISO/TS 32001 进行标准化,以纳入 PDF 2.0(ISO 32000-2)标准。该编解码器由 brotli4j 提供支持(这是一个必要的依赖项,为 Linux/macOS/Windows 系统的 x86_64 和 aarch64 架构提供了原生二进制文件)。
为编写器生成的页面内容流启用 Brotli 压缩:
PdfWriter writer = PdfWriter.getInstance(document, out);
writer.
setUseBrotliCompression(true); // /BrotliDecode instead of /FlateDecode
……或者为后续创建的每个 PdfWriter 全局设置:
Document.useBrotliCompression =true;
读取过程完全透明:PdfReader.getStreamBytes(...) 和 PdfReader.getPageContent(...) 会自动解码 /BrotliDecode,因此 OpenPDF 无需任何额外配置即可打开 Brotli 压缩的 PDF(例如由 AutoCAD 的 pdfplot11.hdi 生成的 PDF)。原始编解码器可通过 org.openpdf.text.pdf.codec.BrotliFilter(encode / decode)获取。
为了与尚未实现 ISO/TS 32001 的旧版 PDF 阅读器兼容,默认压缩方式仍为 /FlateDecode。
可选依赖
- BouncyCastle(BouncyCastle 用于对 PDF 文件进行签名,因此是推荐的依赖项)
- 提供程序(
org.bouncycastle:bcprov-jdk18on或org.bouncycastle:bcprov-ext-jdk18on,具体取决于您使用的算法) - PKIX/CMS(
org.bouncycastle:bcpkix-jdk18on)
- 提供程序(
- Apache FOP(
org.apache.xmlgraphics:fop) - 请参考我们的 pom.xml 以了解所需的版本。
致谢
请参阅 Contributors.md。
Introduction
OpenPDF 是一款免费的 Java 库,用于创建和编辑 PDF 文件,遵循 LGPL 和 MPL 开源协议。OpenPDF 源自于 iText 的一个分支。我们欢迎其他开发者的贡献。请随时向这个 GitHub 仓库提交 pull 请求和错误报告。⛺【此简介由AI生成】
Customize your domain