【问题标题】:Adding pages to PDF/A file with PDFBox without losing PDF/A validity使用 PDFBox 将页面添加到 PDF/A 文件而不丢失 PDF/A 有效性
【发布时间】:2018-12-15 00:13:01
【问题描述】:

我正在开发一个 Java 应用程序,该应用程序必须处理一个包含 PDF/A 文件的文件夹,并使用 Apache 的 PDFBox 库为每个文件添加一个包含一些信息的页面。问题是添加信息后输出的 PDF 文件不再是 PDF/A。这是来自网站的验证测试:https://www.pdf-online.com/osa/validate.aspx:

这是我用来生成 PDF 文件的代码的相关部分:

  String pdfFileName = this.baseFolder+this.extendedPDFFileName;

  File file = new File(pdfFileName); 

  PDDocument pdfFile = PDDocument.load(file);

  PDPage pag = new PDPage();

  // As a test, simply adding a page makes the PDF unvalid as PDF/A
  pdfFile.addPage(pag);

  pdfFile.save(file);

  pdfFile.close();

我可以做些什么来保持 PDF/A 格式的有效性?提前致谢,

【问题讨论】:

  • 从错误消息中,它需要资源。所以试试pag,setResources(new PDResources());,但我怀疑这就是全部。您期望 PDF/A-1a(可访问)比 PDF/A-1b(基本)更难。

标签: java pdfbox


【解决方案1】:

正如 Tilman Hausherr 所建议的,问题已通过向新页面添加 PDResources 对象解决,如下所示:

pag.setResources(new PDResources());

现在我遇到了嵌入字体的问题,但这是另一个问题 :)

非常感谢!

【讨论】:

    【解决方案2】:

    您在代码中创建了一个普通的 PDF,您应该从一开始就创建一个有效的 PDF/A。 这是一个链接:https://pdfbox.apache.org/1.8/cookbook/pdfacreation.html

    【讨论】:

    • 您好,感谢您的评论。我已经检查了该链接,但其中的信息用于从头开始创建新的 PDF/A 文件。我确实有一个有效的 PDF/A 文件,那么,您知道是否可以保留其原始格式并仅添加我需要的信息(基本上,几行文本)?
    • 嗯,但是为什么不创建一个有效的 PDF/A(我在上面的评论)并将您的有效 PDF/A 文件复制到代码中的 PDF/A-Object 中呢?在您的示例中,您使用“普通”PDF 函数,因此它似乎符合逻辑,它将输出一个普通的 PDF 文件。
    • 该链接是关于创建 PDF/A-1b 文件的。用户想要一个 PDF/A-1a 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    相关资源
    最近更新 更多