PDF/A 验证
PDF/A validation
我正在尝试根据 PDF/A-1b 规范验证自己创建的 PDF 文件,但出现以下错误(为了验证,我使用了 Apache PDFBox Preflight 库。Apache PDFBox 和 Preflight 的版本是 2.0 .15)
3.1.1:无效的字体定义,Helvetica:字体字典中缺少一些必填字段:firstChar、lastChar、宽度。
3.1.3:字体定义无效,Helvetica:FontDescriptor 中缺少 FontFile 条目
3.1.1:无效的字体定义,ZapfDingbats:字体字典中缺少一些必填字段:firstChar、lastChar、宽度。
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");
字体相关消息是因为您使用了标准的 14 种 1 型字体对象,例如PDType1Font.HELVETICA
。 PDF/A-1b 要求嵌入所有字体。因此使用 PDType0Font.load()
来加载你的字体。对于 acroform 字段,请确保使用具有第三个参数 false
的方法来防止子集化。
XMP 相关消息是因为您忘记将一致性设置为 "B"。另请参阅源代码下载的示例子项目中的 CreatePDFA.java
。
我正在尝试根据 PDF/A-1b 规范验证自己创建的 PDF 文件,但出现以下错误(为了验证,我使用了 Apache PDFBox Preflight 库。Apache PDFBox 和 Preflight 的版本是 2.0 .15)
3.1.1:无效的字体定义,Helvetica:字体字典中缺少一些必填字段:firstChar、lastChar、宽度。
3.1.3:字体定义无效,Helvetica:FontDescriptor 中缺少 FontFile 条目
3.1.1:无效的字体定义,ZapfDingbats:字体字典中缺少一些必填字段:firstChar、lastChar、宽度。
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");
字体相关消息是因为您使用了标准的 14 种 1 型字体对象,例如PDType1Font.HELVETICA
。 PDF/A-1b 要求嵌入所有字体。因此使用 PDType0Font.load()
来加载你的字体。对于 acroform 字段,请确保使用具有第三个参数 false
的方法来防止子集化。
XMP 相关消息是因为您忘记将一致性设置为 "B"。另请参阅源代码下载的示例子项目中的 CreatePDFA.java
。