【问题标题】:How to know if a document claims to be in PDF/A using itext如何使用 itext 知道文档是否声称是 PDF/A
【发布时间】:2011-06-29 00:55:42
【问题描述】:

我至少会检查一个文档是否声称它符合 PDF/A。

如何使用 iText 做到这一点?

【问题讨论】:

    标签: java itext pdfa


    【解决方案1】:

    借助扩展过滤器,PDF/A 文件的扩展名为 .pdf

    【讨论】:

    • 您甚至在 Google 上搜索过 PDF/A 吗?并非所有 PDF 文档都符合 PDF/A 标准。
    • 我只想使用 iText 来检查 pdf 文档是否声明为 PDF/A,作为第一步,我不想验证真正的合规性文件。我读过可以使用 XmpReader 类来读取元数据,但我不明白如何。
    【解决方案2】:

    啊。 PDF/A 规范包含答案(除非有人花钱买它,否则对你没有多大好处)。您可以从 iText 的源代码中挖掘出相同的信息……这实际上可能更容易。如果可能的话,阅读该规范是值得避免的。 ;)

    首先,iText 将为您获取元数据 xml,但“xmp”包仅用于读取 XMP,以便 iText 可以根据需要对其进行修改,然后再将其保存。它实际上不包含任何“获取”功能。替换、设置、保存……没有“获取”。

    这样你就得到了 XMP 元数据:

    PdfReader reader = new PdfReader(pdfPath);
    byte metaBytes[] = reader.getMetadata();
    

    由您选择的 XML 解析库来获取“pdfaid:conformance”值(“A”或“B”)。 XPath 会很好。我不确定这是元素主体的值还是属性。我倾向于元素:<pdfaid:conformance>A</pdfaid:conformance>

    如果您愿意偷工减料,并且文档声明了 pdfaid 命名空间 (http://www.aiim.org/pdfa/ns/id),则可以放心使用它要求 A 或 B。

    【讨论】:

      【解决方案3】:

      要执行更多操作并检查文档是否合规,您可以使用https://github.com/gba-awl/padaf 来验证 Isartor 测试套件。另见How can I test a PDF document if it is PDF/A compliant?

      【讨论】:

        【解决方案4】:

        获取 XML 元数据(不是 byte[]):

         PdfReader reader = new PdfReader("hello.pdf");
         String xmlMetadata = new String( reader.getMetadata() );
        

        【讨论】:

          猜你喜欢
          • 2018-09-12
          • 1970-01-01
          • 1970-01-01
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-29
          • 2020-03-09
          相关资源
          最近更新 更多