关于java:将PDFBox迁移到2.x时出现GetPages错误

GetPages error while migrating PDFBox to 2.x

我将我的pdfbox 1.8.x迁移到2.0.12,并且必须应对一些变化。

最后一个我不知道的是发生在下面的代码中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    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的方法。

This question implicates many ways to do so,E.G.Assuming Java 8:

1
2
3
4
5
private static List<PDPage> getPages(PDDocument pdDocumentTarget) {
    List<PDPage> result = new ArrayList<>();
    pdDocumentTarget.getPages().forEach(result::add);
    return result;
}