将 PDFBox 迁移到 2.x 时出现 GetPages 错误
Posted
技术标签:
【中文标题】将 PDFBox 迁移到 2.x 时出现 GetPages 错误【英文标题】:GetPages error while migrating PDFBox to 2.x 【发布时间】:2019-03-15 09:43:13 【问题描述】:我正在将我的 PDFBox 1.8.x 迁移到 2.0.12,并且必须进行一些更改。
我无法弄清楚的最后一个发生在下面的代码中。
public static byte[] mergeDocuments(byte[] document1, byte[] document2)
try (PDDocument pdDocument1 = load(document1); PDDocument pdDocument2 = load(document2))
final List<PDPage> pages1 = getPages(pdDocument1);
final List<PDPage> pages2 = getPages(pdDocument2);
pages1.addAll(pages2);
return createDocument(pages1);
catch (IOException e)
throw new RuntimeException(e);
private static List getPages(PDDocument pdDocumentTarget)
return pdDocumentTarget.getDocumentCatalog().getAllPages();
最后一行发生错误,我必须将旧的“.getAllPages()”更改为“.getPages”,但随后我将 PDPageTree 作为返回而不是 List。
代码是几年前写的,不是我写的。我已经尝试过一些事情,比如强制转换或更改类型,但它总是会在不同的地方导致错误。
提前感谢您的帮助
【问题讨论】:
除了答案,你也可以试试document.getPage(i)
和document.getNumberOfPages()
【参考方案1】:
PDPageTree
实现了Iterable<PDPage>
,因此您实际上需要一种为Iterable
生成List
的方法。
This question 说明了许多方法,例如假设 Java 8:
private static List<PDPage> getPages(PDDocument pdDocumentTarget)
List<PDPage> result = new ArrayList<>();
pdDocumentTarget.getPages().forEach(result::add);
return result;
【讨论】:
以上是关于将 PDFBox 迁移到 2.x 时出现 GetPages 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Workbench 将 MS Access 迁移到 MySQL 时出现日期时间错误
将存储库从 Windows 迁移到 Linux 时出现格式错误的转储文件头(编码问题?)
将 API 迁移到 .net Core 3 时出现 JWT 401 未经授权的错误
使用 Hibernate 将 Java 应用程序从 DB2 迁移到 BigQuery 时出现错误“找到:int64,预期:整数”
将Wix 3.0迁移到Wix 4.0时出现错误:WXCP0006:此节点前的空格不正确(WhitespacePrecedingNodeWrong)