如何使用 itext7 知道文档是否声称在 PDF/A 中
How to know if a document claims to be in PDF/A using itext7
我有一个使用 iText v5 编写的函数,我正在尝试更新它以使用 iText v7。该函数检查文档是否声称是 PDF/A(我知道 iText 不是 PDF/A 验证器,我只需要知道它是否声明为)。
v5 中的实现是 this other question 中的实现。但是,reader.getMetadata() 方法在 iText v7 中不再可用。
我发现 v7 中的 reader 提供了一种新方法,看起来非常适合这种情况 getPdfAConformanceLevel,但它总是返回 null。检查 source code 后,我没有看到 pdfAConformanceLevel 在哪里初始化,所以我想知道,这是如何工作的?
我也试过阅读 DocumentInformation,但没有成功。
我的代码是:
PdfReader reader = new PdfReader(file);
PdfAConformanceLevel level = reader.getPdfAConformanceLevel();
if (level != null) {
String conformance = level.getConformance();
return "A".equalsIgnoreCase(conformance) || "B".equalsIgnoreCase(conformance);
}
return false
至少有两种方法可以获得一致性级别。
第一种方式 是明确的 - 您手动完成所有工作并负责异常处理。
// Open the document
PdfDocument pdfDocument = new PdfDocument(new PdfReader(filePath));
// Parse conformance level from metadata explicitly
byte[] existingXmpMetadata = pdfDocument.getXmpMetadata();
XMPMeta meta = XMPMetaFactory.parseFromBuffer(existingXmpMetadata);
PdfAConformanceLevel conformanceLevel = PdfAConformanceLevel.getConformanceLevel(meta);
第二种方式确实是通过PdfReader
。您已经正确识别了这种方式。 conformanceLevel
字段是在文档打开时设置的,所以只创建PdfReader
是不够的,需要打开文档:
PdfDocument pdfDocument = new PdfDocument(new PdfReader(filePath));
PdfAConformanceLevel conformanceLevel = pdfDocument.getReader().getPdfAConformanceLevel();
我有一个使用 iText v5 编写的函数,我正在尝试更新它以使用 iText v7。该函数检查文档是否声称是 PDF/A(我知道 iText 不是 PDF/A 验证器,我只需要知道它是否声明为)。
v5 中的实现是 this other question 中的实现。但是,reader.getMetadata() 方法在 iText v7 中不再可用。
我发现 v7 中的 reader 提供了一种新方法,看起来非常适合这种情况 getPdfAConformanceLevel,但它总是返回 null。检查 source code 后,我没有看到 pdfAConformanceLevel 在哪里初始化,所以我想知道,这是如何工作的?
我也试过阅读 DocumentInformation,但没有成功。
我的代码是:
PdfReader reader = new PdfReader(file);
PdfAConformanceLevel level = reader.getPdfAConformanceLevel();
if (level != null) {
String conformance = level.getConformance();
return "A".equalsIgnoreCase(conformance) || "B".equalsIgnoreCase(conformance);
}
return false
至少有两种方法可以获得一致性级别。
第一种方式 是明确的 - 您手动完成所有工作并负责异常处理。
// Open the document
PdfDocument pdfDocument = new PdfDocument(new PdfReader(filePath));
// Parse conformance level from metadata explicitly
byte[] existingXmpMetadata = pdfDocument.getXmpMetadata();
XMPMeta meta = XMPMetaFactory.parseFromBuffer(existingXmpMetadata);
PdfAConformanceLevel conformanceLevel = PdfAConformanceLevel.getConformanceLevel(meta);
第二种方式确实是通过PdfReader
。您已经正确识别了这种方式。 conformanceLevel
字段是在文档打开时设置的,所以只创建PdfReader
是不够的,需要打开文档:
PdfDocument pdfDocument = new PdfDocument(new PdfReader(filePath));
PdfAConformanceLevel conformanceLevel = pdfDocument.getReader().getPdfAConformanceLevel();