首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDF/A是正确的飞行前验证,但在线pdf-工具不验证它。

PDF/A是正确的飞行前验证,但在线pdf-工具不验证它。
EN

Stack Overflow用户
提问于 2019-06-27 12:50:45
回答 1查看 929关注 0票数 1

预飞(2.0.15版)工具正确地验证了生成的pdf (用pdfbox版本2.0.15创建)文件,但在线pdf-tools (e.x )。https://www.pdf-online.com/osa/validate.aspx)没有正确地验证它。我正在犯以下错误:

遵从pdfa-1b结果文档不符合PDF/A。详细验证文件"file.pdf“是否符合pdfa-1b。

XMP元数据中不允许匿名RDF资源(rdf:Description但没有rdf:about属性)。

外观字典不包含条目。

外观字典不包含条目。

外观字典不包含条目。

外观字典不包含条目。

外观字典不包含条目。

该文件不符合要求的标准。

文档包含具有矛盾性或没有适当外观的注解或表单字段。

文档的元数据丢失或不一致或损坏。该文件不符合PDF/A-1b标准。

好了。

为了生成元数据,我使用以下代码:

代码语言:javascript
复制
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()
    }

}

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-29 11:35:07

如评论中所述:

1)未能报告“外观字典不包含条目”是PDFBox预飞行中的一个bug,将在2.0.17中修复,参见PDFBOX-4586。根据本文件

ISO 19005-1验证器将失败,否则将导致小部件注释缺乏外观字典的符合文件。

2)“没有rdf:about属性的rdf:Description”可能是一个bug,也可能不是一个bug。VeraPDF不认为它是一个。您的代码使用了1.8.*版本。对于这些,您可以调用dcSchema.setAbout("")来修复这个问题。在2.0.*中,如果使用metadata.createAndAddDublinCoreSchema()创建模式,则不会出现问题。

我在VeraPDF项目中创建了一个问题,他们将在验证技术工作组的下一次会议上讨论这个问题。

3)小部件不包含条目是因为在调用setValue()时,没有提供足够的信息(例如矩形).That是您获得消息widget of field aa has no rectangle, no appearance stream created的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56791435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档