我至少会检查一个文档是否声称它符合 PDF/A。
如何使用 iText 做到这一点?
啊。PDF/A 规范包含答案(除非有人花钱买它,否则对你没有多大好处)。您可以从 iText 的源代码中挖掘出相同的信息……这实际上可能更容易。如果可能的话,阅读该规范是值得避免的。;)
首先,iText 将为您提供元数据 xml,但“xmp”包仅用于读取 XMP,以便 iText 可以在再次保存之前根据需要对其进行修改。它实际上不包含任何“获取”功能。替换、设置、保存……没有“获取”。
因此,您可以得到 XMP 元数据:
PdfReader reader = new PdfReader(pdfPath);
byte metaBytes[] = reader.getMetadata();
获取“pdfaid:conformance”值(“A”或“B”)取决于您选择的 XML 解析库。XPath 会很好。我不确定这是元素主体的值还是属性。我倾向于元素: <pdfaid:conformance>A</pdfaid:conformance>
如果您愿意偷工减料并且文档声明了pdfaid
命名空间(http://www.aiim.org/pdfa/ns/id),那么可以肯定的是,它会使用它来声明 A 或 B .
获取 XML 元数据(不是 byte[]):
PdfReader reader = new PdfReader("hello.pdf");
String xmlMetadata = new String( reader.getMetadata() );
要执行更多操作并检查文档是否合规,您可以使用https://github.com/gba-awl/padaf来验证 Isartor 测试套件。另请参阅如何测试 PDF 文档是否符合 PDF/A?
在扩展过滤器的帮助下,PDF/A 文件的扩展名为 .pdf