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

标签 java pdfbox

我正在尝试将注释从一个 pdf 复制到另一个 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");

如果我尝试使用 Adob​​e Reader 打开此输出文件并再次保存它 - 大小会恢复正常。有什么想法吗? 预先非常感谢您提供的任何帮助。

最佳答案

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

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

关于java - PDFBox:如何正确地将注释从一个pdf复制到另一个pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55240324/

相关文章:

java - Spring:如何动态创建 SINGLETON 作用域 bean?

java - 在java中写入类路径内的文件

Java Spring - 如何获取RequestParam,并从url中删除?

java - 如何使用 PDFbox 将元数据添加到 PDF 文档?

java - 使用 HttpURLConnection 的 HTTPS 网站

java - 为什么我不能多次运行这个简单的服务器客户端应用程序的客户端?

java - PDFBox 1.8.10 : Fill and Sign PDF produces invalid signatures

java - PDFBox:检索具有相同名称的多个文本字段

java - 按顺序阅读 PDFBox 中的段落