PDF / A验证

时间:2019-06-27 09:21:32

标签: java pdfbox pdfa acrofields

我正在尝试根据PDF / A-1b规范验证自行创建的PDF文件,但出现以下错误(为进行验证,我使用了Apache PDFBox Preflight库。ApachePDFBox和Preflight的版本为2.0.15 )

3.1.1:无效的字体定义,Helvetica:“字体”词典中缺少一些必填字段:firstChar,lastChar,widths。

3.1.3:无效的字体定义,Helvetica:FontDescriptor中缺少FontFile条目

3.1.1:无效的字体定义ZapfDingbats:“字体”词典中缺少一些必填字段:firstChar,lastChar,widths。

3.1.3:无效的字体定义,ZapfDingbats:FontDescriptor中缺少FontFile条目

7.11.1:元数据错误

如何克服以上问题。 预先谢谢你

PDResources resources = new PDResources();
resources.put(COSName.getPDFName("Helv"), 
pdfPage.getText1Font());
String deafultAppearance = "/Helv 12 Tf 0 g";

form.setDefaultResources(resources);
form.setDefaultAppearance(deafultAppearance);
pdDocument.getDocumentCatalog().setAcroForm(form);


   metadata.createAndAddPDFAExtensionSchemaWithDefaultNS(); 
 metadata.getPDFExtensionSchema().addNamespace("http://www.aiim.org/pdfa/ns/schema#", "pdfaSchema");
                 metadata.getPDFExtensionSchema().addNamespace("http://www.aiim.org/pdfa/ns/property#", "pdfaProperty");
                metadata.getPDFExtensionSchema().addNamespace("http://www.aiim.org/pdfa/ns/id/", "pdfaid");
    XMPSchema uaSchema = new XMPSchema(XMPMetadata.createXMPMetadata(),
                        "pdfaSchema", "pdfaSchema", "pdfaSchema");
    uaSchema.setTextPropertyValue("schema", "PDF/A Accessibility Schema");
    uaSchema.setTextPropertyValue("namespaceURI", "http://www.aiim.org/pdfa/ns/id/");
                uaSchema.setTextPropertyValue("prefix", "pdfaid");
    XMPSchema uaProp = new XMPSchema(XMPMetadata.createXMPMetadata(),
                        "pdfaProperty", "pdfaProperty", "pdfaProperty");
    uaProp.setTextPropertyValue("name", "part");
    uaProp.setTextPropertyValue("valueType", "Integer");
    uaProp.setTextPropertyValue("category", "internal");
    uaProp.setTextPropertyValue("description", "Indicates, which part of ISO 14289 standard is followed");
    uaSchema.addUnqualifiedSequenceValue("property", uaProp);
    metadata.getPDFExtensionSchema().addBagValue("schemas", uaSchema);
    metadata.getPDFExtensionSchema().setPrefix("pdfaid");
    metadata.getPDFExtensionSchema().setTextPropertyValue("part", "1");

1 个答案:

答案 0 :(得分:0)

与字体相关的消息是因为您使用了标准的14种类型1字体对象,例如PDType1Font.HELVETICA。 PDF / A-1b要求嵌入所有字体。因此,使用PDType0Font.load()加载字体。对于acroform字段,请确保使用具有第三个参数false的方法来防止子设置。

与XMP相关的消息是因为您忘记将一致性设置为“ B”。另请参见源代码下载的示例子项目中的CreatePDFA.java