OpenPDF 是一个开源的 Java PDF 文件库
OpenPDF 是一个用于创建和编辑 PDF 文件的 Java 库,采用 LGPL 和 MPL 开源许可证。OpenPDF 是 iText 的 LGPL/MPL 开源继任者,基于 iText 4 svn 标签的一些分支。我们欢迎其他开发者的贡献。请随时向这个 GitHub 仓库提交拉取请求和错误报告。
[Maven Central 徽章] [CI 徽章] [LGPL 2.1 许可证徽章] [MPL 许可证徽章]
[Codacy 质量徽章] [Codacy 覆盖率徽章] [CodeQL 徽章] [SonarCloud 质量门徽章] [CodeFactor 徽章]
[Gitter 聊天徽章]
OpenPDF 2.0.3 版本于 2024 年 8 月 7 日发布
在这里获取 2.0.3 版本:https://github.com/LibrePDF/OpenPDF/releases/tag/2.0.3
请注意:Maven Central 等仓库可能需要几天时间才能更新。
其他版本
特性
OpenPDF 的一些特性包括:
- 创建 PDF:您可以使用 OpenPDF 从头开始创建新的 PDF 文档。
- 操作现有 PDF:OpenPDF 允许您通过添加或删除页面、修改文本等方式修改现有 PDF 文档。
- 文本和字体支持:您可以使用各种字体和样式向 PDF 文档添加文本,并从 PDF 文件中提取文本。
- 图形和图像:OpenPDF 支持向 PDF 文件添加图像和图形。
- 表格支持:该库便于在 PDF 文档中创建表格。
- 加密:您可以出于安全目的加密 PDF 文档。
- 页面布局:OpenPDF 允许您设置页面大小、方向和其他布局属性。
将 OpenPDF 作为 Maven 依赖项使用
将以下内容添加到您的 pom.xml 文件中,以使用最新版本的 OpenPDF:
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>2.0.3</version>
</dependency>
许可证
简短说明请参见 https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
简短说明请参见 https://en.wikipedia.org/wiki/Mozilla_Public_License
您还可以在 https://itsfoss.com/open-source-licenses-explained/ 找到对这些许可证的简明解释
我们希望 OpenPDF 由始终采用 LGPL 和 MPL 许可证的源代码组成。这也意味着对项目的任何新贡献必须仅采用双重 LGPL 和 MPL 许可证。
文档
- 示例
- JavaDoc
- 教程(wiki,正在进行中)
- 从 iText 迁移,TIFF 支持
背景
OpenPDF是一个开源软件,采用LGPL和MPL许可证。它是iText 4.0版本的一个分支,更具体地说是iText svn标签4.2.0的分支,该版本曾在sourceforge上公开托管,源代码中包含LGPL和MPL许可证头,svn仓库中也有LGPL和MPL许可证文档。从iText 5.0版本开始,开发者转向了AGPL许可证,以提高他们销售商业许可证的能力。
OpenPDF在GitHub上的祖先(按分支顺序):
- @rtfarte / OpenPDF - LibrePDF/OpenPDF的父项目
- @kulatamicuda / iText-4.2.0
- @daviddurand / iText-4.2.0
- @ymasory / iText-4.2.0 - GitHub上的原始父项目
使用OpenPDF的项目
- Spring Framework
- flyingsaucer
- Digital Signature Service
- Confluence PDF导出
- OpenCMS、Nuxeo Web Framework、QR Invoice Library以及许多闭源商业应用程序
- 完整列表:使用OpenPDF的构件
Android
OpenPDF可用于Android,更多信息请参见:Android支持
贡献
欢迎所有的pull请求!请确保您的贡献可以使用双重LGPL和MPL许可证发布。特别是,提交给OpenPDF项目的pull请求必须只包含您自己编写的代码。GPL或AGPL许可的代码将不被接受。
要为OpenPDF项目贡献代码,您的GitHub账户必须包含您的真实姓名,以便我们验证您的身份。这是为了确保OpenPDF项目的信任、安全和完整性,并防止诸如"XZ Utils后门"之类的安全事件。了解贡献者的真实姓名还可以识别和防止利益冲突。
更多详情:贡献
编码风格
- 代码缩进风格为4个空格。最大行长度为120个字符。
- 通常尽量保持您正在修改的文件中的编码风格。
依赖项
必需的依赖项
我们现在有不同版本的OpenPDF,它们需要不同版本的Java:
- 2.0.x分支需要Java 17或更高版本。
- 1.4.x分支需要Java 11或更高版本。
- 1.3.x分支需要Java 8或更高版本。
- 1.3的某些版本发布时要求最低Java 11,但我们已将此要求恢复为最低Java 8。
- OpenPDF 2.0.x版本:我们正在为Java 17+现代化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>
支持复杂字形替换/连字替换
OpenPDF支持字形替换,这对于正确渲染字体连字替换要求是必需的。需要FOP依赖项来启用此功能。详情请参阅以下wiki:wiki
支持OpenType布局、字形定位、重排和替换
OpenPDF支持OpenType布局、字形定位、重排和替换,这对于正确定位重音符号、渲染非拉丁文和从右到左的文字是必需的。OpenPDF支持DIN 91379。 参见:wiki
可选
- BouncyCastle(BouncyCastle用于签署PDF文件,因此是推荐的依赖项)
- Provider(
org.bouncycastle:bcprov-jdk18on
或org.bouncycastle:bcprov-ext-jdk18on
,取决于您使用的算法) - PKIX/CMS(
org.bouncycastle:bcpkix-jdk18on
)
- Provider(
- Apache FOP(
org.apache.xmlgraphics:fop
) - 请参考我们的pom.xml以了解所需的版本。
致谢
请参见Contributors.md。