PDF/A 已通过预检正确验证,但在线 pdf 工具未对其进行验证
PDF/A was validated correctly with preflight but online pdf-tools does not validate it
Preflight(版本 2.0.15)工具已正确验证生成的 pdf(使用 pdfbox 版本 2.0.15 创建)文件,但在线 pdf 工具(e.x。https://www.pdf-online.com/osa/validate.aspx)没有正确验证它。我遇到以下错误:
合规性 pdfa-1b
结果文档不符合 PDF/A。
细节
正在验证文件 "file.pdf" 的一致性级别 pdfa-1b
XMP 元数据中不允许使用匿名 RDF 资源(rdf:Description without rdf:about 属性)。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
文档不符合要求的标准。
该文档包含注释或表单字段,其外观不明确或不合适。
文档的元数据丢失、不一致或损坏。
该文档不符合 PDF/A-1b 标准。
完成。
为了生成元数据,我使用以下代码:
private void addMetadata(PDDocument pdDocument,final String zzz,final String yyy) {
PDDocumentCatalog catalog = pdDocument.getDocumentCatalog();
PDDocumentInformation info = pdDocument.getDocumentInformation();
info.setCreationDate(Calendar.getInstance());
info.setModificationDate(Calendar.getInstance());
info.setAuthor(metadataAuthor);
info.setProducer(metadataProducer);
info.setTitle(zzz + "_" + yyy);
info.setKeywords("aaa");
info.setCreator("aaa");
info.setSubject("aaa");
PDMarkInfo markInfo = new PDMarkInfo();
markInfo.setMarked(true);
catalog.setMarkInfo(markInfo);
try {
PDMetadata metadataStream = new PDMetadata(pdDocument);
catalog.setMetadata( metadataStream );
XMPMetadata xmp = new XMPMetadata();
XMPSchemaPDFAId pdfaid = new XMPSchemaPDFAId(xmp);
xmp.addSchema(pdfaid);
pdfaid.setConformance("B");
pdfaid.setPart(1);
pdfaid.setAbout("");
XMPSchemaDublinCore dcSchema = xmp.addDublinCoreSchema();
dcSchema.setTitle( info.getTitle() );
dcSchema.addCreator("aaa");
dcSchema.setDescription( info.getSubject() );
XMPSchemaPDF pdfSchema = xmp.addPDFSchema();
pdfSchema.setKeywords( info.getKeywords() );
pdfSchema.setProducer( info.getProducer() );
XMPSchemaBasic basicSchema = xmp.addBasicSchema();
basicSchema.setModifyDate( info.getModificationDate() );
basicSchema.setCreateDate( info.getCreationDate() );
basicSchema.setCreatorTool( info.getCreator() );
metadataStream.importXMPMetadata(xmp.asByteArray());
InputStream colorProfile = getClass().getClassLoader().getResourceAsStream("icm/sRGB Color Space Profile.icm");
// create output intent
PDOutputIntent oi = new PDOutputIntent(pdDocument, colorProfile);
String value = "sRGB IEC61966-2.1";
oi.setInfo(value);
oi.setOutputCondition(value);
oi.setOutputConditionIdentifier(value);
oi.setRegistryName("http://www.color.org");
catalog.addOutputIntent(oi);
} catch (Exception e) {
e.printStackTrace()
}
}
有什么建议吗?
如评论中所述:
1)报错"The appearance dictionary doesn't contain an entry"是PDFBox preflight中的bug,2.0.17会修复,见PDFBOX-4586. According to this document:
An ISO 19005-1 validator shall FAIL otherwise conforming files in
which a widget annotation lacks an appearance dictionary
2) "rdf:Description without rdf:about attribute" 可能是也可能不是错误。 VeraPDF 不认为它是一个。您的代码使用了 1.8.* 版本。对于这些,您可以调用 dcSchema.setAbout("")
来解决这个问题。在 2.0.* 中,如果您使用 metadata.createAndAddDublinCoreSchema()
.
创建架构,则不会出现此问题
我在 VeraPDF project 中创建了一个问题,他们 将在下一次验证技术工作组会议上提出这个问题进行讨论。
3) 小部件不包含条目是因为在调用 setValue()
时,没有足够的信息(例如矩形)。这就是为什么您收到消息 widget of field aa has no rectangle, no appearance stream created
.
Preflight(版本 2.0.15)工具已正确验证生成的 pdf(使用 pdfbox 版本 2.0.15 创建)文件,但在线 pdf 工具(e.x。https://www.pdf-online.com/osa/validate.aspx)没有正确验证它。我遇到以下错误:
合规性 pdfa-1b 结果文档不符合 PDF/A。 细节 正在验证文件 "file.pdf" 的一致性级别 pdfa-1b
XMP 元数据中不允许使用匿名 RDF 资源(rdf:Description without rdf:about 属性)。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
外观字典中没有条目。
文档不符合要求的标准。
该文档包含注释或表单字段,其外观不明确或不合适。
文档的元数据丢失、不一致或损坏。 该文档不符合 PDF/A-1b 标准。
完成。
为了生成元数据,我使用以下代码:
private void addMetadata(PDDocument pdDocument,final String zzz,final String yyy) {
PDDocumentCatalog catalog = pdDocument.getDocumentCatalog();
PDDocumentInformation info = pdDocument.getDocumentInformation();
info.setCreationDate(Calendar.getInstance());
info.setModificationDate(Calendar.getInstance());
info.setAuthor(metadataAuthor);
info.setProducer(metadataProducer);
info.setTitle(zzz + "_" + yyy);
info.setKeywords("aaa");
info.setCreator("aaa");
info.setSubject("aaa");
PDMarkInfo markInfo = new PDMarkInfo();
markInfo.setMarked(true);
catalog.setMarkInfo(markInfo);
try {
PDMetadata metadataStream = new PDMetadata(pdDocument);
catalog.setMetadata( metadataStream );
XMPMetadata xmp = new XMPMetadata();
XMPSchemaPDFAId pdfaid = new XMPSchemaPDFAId(xmp);
xmp.addSchema(pdfaid);
pdfaid.setConformance("B");
pdfaid.setPart(1);
pdfaid.setAbout("");
XMPSchemaDublinCore dcSchema = xmp.addDublinCoreSchema();
dcSchema.setTitle( info.getTitle() );
dcSchema.addCreator("aaa");
dcSchema.setDescription( info.getSubject() );
XMPSchemaPDF pdfSchema = xmp.addPDFSchema();
pdfSchema.setKeywords( info.getKeywords() );
pdfSchema.setProducer( info.getProducer() );
XMPSchemaBasic basicSchema = xmp.addBasicSchema();
basicSchema.setModifyDate( info.getModificationDate() );
basicSchema.setCreateDate( info.getCreationDate() );
basicSchema.setCreatorTool( info.getCreator() );
metadataStream.importXMPMetadata(xmp.asByteArray());
InputStream colorProfile = getClass().getClassLoader().getResourceAsStream("icm/sRGB Color Space Profile.icm");
// create output intent
PDOutputIntent oi = new PDOutputIntent(pdDocument, colorProfile);
String value = "sRGB IEC61966-2.1";
oi.setInfo(value);
oi.setOutputCondition(value);
oi.setOutputConditionIdentifier(value);
oi.setRegistryName("http://www.color.org");
catalog.addOutputIntent(oi);
} catch (Exception e) {
e.printStackTrace()
}
}
有什么建议吗?
如评论中所述:
1)报错"The appearance dictionary doesn't contain an entry"是PDFBox preflight中的bug,2.0.17会修复,见PDFBOX-4586. According to this document:
An ISO 19005-1 validator shall FAIL otherwise conforming files in which a widget annotation lacks an appearance dictionary
2) "rdf:Description without rdf:about attribute" 可能是也可能不是错误。 VeraPDF 不认为它是一个。您的代码使用了 1.8.* 版本。对于这些,您可以调用 dcSchema.setAbout("")
来解决这个问题。在 2.0.* 中,如果您使用 metadata.createAndAddDublinCoreSchema()
.
我在 VeraPDF project 中创建了一个问题,他们 将在下一次验证技术工作组会议上提出这个问题进行讨论。
3) 小部件不包含条目是因为在调用 setValue()
时,没有足够的信息(例如矩形)。这就是为什么您收到消息 widget of field aa has no rectangle, no appearance stream created
.