PDFBox: как правильно скопировать аннотацию из одного PDF в другой - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь скопировать аннотации из одного PDF в другой. Но копирование даже 1 аннотации удваивает размер выходного файла PDF.

Ниже приведен простой пример кода:

    PDDocument pdf = PDDocument.load(new File("test1.pdf"));
    PDDocument pdf2 = PDDocument.load(new File("test/test1.pdf"));
    List<PDAnnotation> pdfAnnotations1 = pdf.getPage(0).getAnnotations();
    List<PDAnnotation> pdfAnnotations2 = pdf2.getPage(0).getAnnotations();

    pdfAnnotations1.add(pdfAnnotations2.get(0));
    pdf.save("test1.pdf");

Если я попытаюсь открыть этот выходной файл в Adobe Reader и сохранить его снова - размер вернется к норме. Какие-нибудь мысли? Заранее большое спасибо за любую помощь.

1 Ответ

1 голос
/ 19 марта 2019

Каждая аннотация указывает на страницу, где она находится.Поэтому вам также необходимо исправить это, вызвав pdfAnnotations1.get(0).setPage(pdf.getPage(0)).

Увеличение размера происходит потому, что без вызова, который я описал, аннотация будет указывать на старую страницу, которая указывает на ее родителя и т. Д.

...