PDF 文件是世界上最常用的文件格式,占全球文档总数的 70%。但是,PDF 格式也非常复杂,而且 Java 对其的支持也较差。
由于我已花了 20 多年时间处理 Java 和 PDF 文件,因此我认为对新的 foojay.io(OpenJDK 之友的聚集地)做出有益的贡献将是 Java 开发人员的快速指南,您正在这个网站上阅读这篇文章!
1.什么是 PDF 文件?
PDF 文件旨在在多个平台上快速准确地显示文档。它们通过将所需的所有信息(文本、图像、字体)存储在复杂的二进制数据结构中来实现这一点。
PDF 基于 Postscript,您应该将其视为程序而非数据转储。显示的文档是运行 PDF 文件中包含的 PDF“程序”时得到的。因此,您需要一个能够理解 PDF 文件的程序来显示它。
2. PDF 是一个开放标准吗?
PDF 文件格式由 Adobe 创建,但现在已成为开放 ISO 标准。PDF 文件格式有多个版本(均向后兼容)。
3. 如何才能看到 PDF 文件的真实样子?
如果您真的想看看 PDF 文件内部是什么样子...请尝试IText 中的RUPS诊断查看器。
4. 如何可以找到PDF文件?
因为它们非常常见,所以您很可能需要将它们存储在数据库或存储库中、编辑它们、从它们中提取数据或显示它们。
5. 应该如何存储它们?
始终将 PDF 视为 blob。如果您将其视为文本结构,则会破坏内部参考表。
此外,避免在开始或结束处添加填充,因为这会导致 PDF 文件无法使用。
6. Java 为 PDF 文件提供哪些支持?
Java 不提供对 PDF 文件开箱即用的支持。
7. 有没有任何 Java 库?
国外有很多不错的库(包括开源和商业的)可用于处理 PDF 文件。
看看以下内容:
- Itext (商业/AGPL)
- Apache PDFBox和FOP(Apache 许可证)
- Qoppa(商业)
- Datalogics(商业)
8. 直接创建/编辑 PDF 有多容易?
PDF 文件以复杂的混合二进制/文本结构存储数据,您需要对其进行解析和处理。它不是一种可以轻松从中抓取数据的文件格式。
我们强烈建议始终使用 Java 库来处理 PDF 文件。开发人员已经花费了数年时间为您解决这些复杂问题。
9. 显示 PDF 文件有多容易?
PDF 文件需要 PDF 查看器才能显示。如果您正在构建 Web 应用程序,则可以使用PDF.js在浏览器客户端显示 PDF 文件或将其转换为其他格式。
这表明了 Java 市场发生了怎样的变化:2000 年至 2010 年期间,我们的大多数客户都想要一个 Java 客户端查看器/小程序,而当前的趋势是将 PDF 转换为图像或 HTML5/SVG 并在 Web 浏览器中显示,而客户端上不需要 Java。
10. 可以将 PDF 文件转换为其他文件格式吗?
有很多软件工具可以将 PDF 转换为图像、HTML、Word 等。
要记住的是,您将失去 PDF 的许多功能,例如,可重新缩放、可搜索、可包含注释、笔记、视频和声音。PDF 还支持非 RGB 色彩空间。
转换可以使 PDF 文件的显示变得更加简单,但是很多内容将会“在翻译中丢失”。
Java 不提供对 PDF 文件的任何开箱即用的支持。
如果您了解 PDF 文件的工作原理以及可用于处理它们的工具,您会发现 Java 是一种非常高效的处理 PDF 文件的语言。