我正在将我的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。
代码是几年前写的,不是我写的。我已经尝试过一些诸如强制转换或更改类型的操作,但是始终会在不同的地方导致错误。
在此先感谢您的帮助
答案 0 :(得分:2)
PDPageTree
实现Iterable<PDPage>
,因此您实际上需要一种为List
生成Iterable
的方法。
This question说明了许多方法,例如假设使用Java 8:
private static List<PDPage> getPages(PDDocument pdDocumentTarget) {
List<PDPage> result = new ArrayList<>();
pdDocumentTarget.getPages().forEach(result::add);
return result;
}