PDFBox:如何正确地将注释从一个pdf复制到另一个

时间:2019-03-19 11:46:35

标签: java pdfbox

我正在尝试将注释从一个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 个答案:

答案 0 :(得分:1)

每个注释都指向它所在的页面。因此,您还需要通过调用pdfAnnotations1.get(0).setPage(pdf.getPage(0))来更正此问题。

大小增加是因为没有我描述的调用,注释将指向旧页面,指向旧页面,等等。