Ошибка GetPages при переносе PDFBox в 2.x - PullRequest
0 голосов
/ 10 октября 2018

Я перевожу свой 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 () "to" .getPages ", но тогда я получаю PDPageTree в качестве возврата, а не List.

Код написан несколько лет назад, а не мной.Я пробовал некоторые вещи, такие как приведение или изменение типов, но это всегда приводит к ошибкам в разных местах.

Заранее благодарим за любую помощь

1 Ответ

0 голосов
/ 10 октября 2018

PDPageTree реализует Iterable<PDPage>, поэтому вам действительно нужен способ сгенерировать List для Iterable.

Этот вопрос иллюстрирует множество способов сделать это,например, предполагая, что Java 8:

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