有几个想法可以增强PDFBox。下面概述了这些以及 评论和他们计划在同意后立即发布 实现。
增强 PDFBox 的类型安全性,并添加更多泛型集合和代码清理。
这是一项持续的努力,大多数/所有已弃用的方法将在PDFBox 2.0.0中删除
除了PDF解析pdfbox并不总是能很好地处理大型PDF文件,以及一些 的引用实现为 int 而不是 long
PDFBox 2.0.0 将 Java 6 作为最低要求。
为了支持不同的用例并提供最小的工具集PDFBox 2.0.0应该是 分为不同的模块。这与重新排列一些代码是一致的 例如,从PDDocument中删除AWT。
PDFBox 2.0.0将在不使用AWT的情况下呈现大多数字体。
PDFBox 中旧的“经典”PDF 解析器不符合 PDF 规范,因为它解析 从上到下的 PDF,而不是尊重 XRef 信息。非顺序解析器 改善了这种情况,但需要将更清洁的基础分成几个级别
此外,处理不符合要求的文档不应成为核心解析器的一部分 但是一种可扩展的方法,例如通过添加钩子来允许处理解析异常。
最近的PDFBox版本仅限于WinANSI编码的文本。2.0.0 也应该支持 Unicode。
COS 级别的对象需要重构以与新的解析器保持一致。另外 方法签名, 构造...应该在 COS 对象之间变得相似
与其总是解析完整的文档,不如按需解析 对象仅在需要提高性能和最大程度地减少内存占用时才可用。
这可以通过提供一种分层方法来实现,其中基本(非缓存)解析器提供 按需解析和基于顶部构建的缓存解析器会缓存对象,用于以下用例: 这是有益的,例如渲染,调试...
当前的实现是PDF 1.4和一些临时添加的混合,没有明确的 区分什么是支持的,什么是不支持的。我们可以为显式处理提供一些支持 PDFBox 中的版本,例如我将某些方法和属性标记为 PDF 版本支持 水平。此外,这可以成为 PDF/A 和其他合规性检查的良好基础。