PDF / A был проверен правильно с предварительной проверкой, но онлайн pdf-инструменты не проверяют его - PullRequest
1 голос
/ 27 июня 2019

Preflight (версия 2.0.15) правильно проверил сгенерированный файл pdf (был создан с pdfbox версии 2.0.15), но он-лайн pdf-tools (ex https://www.pdf -online.com / osa / validate). aspx ) не проверяет его правильно. Я получаю ошибку ниже:

Соответствие ПДФА-1Б Результат Документ не соответствует PDF / A. подробности Проверка файла "file.pdf" на уровень соответствия pdfa-1b

Анонимные ресурсы RDF (rdf: описание без атрибута rdf: about) не разрешены в метаданных XMP.

Словарь внешнего вида не содержит записи.

Словарь внешнего вида не содержит записи.

Словарь внешнего вида не содержит записи.

Словарь внешнего вида не содержит записи.

Словарь внешнего вида не содержит записи.

Документ не соответствует запрашиваемому стандарту.

Документ содержит аннотации или поля формы с неоднозначным или без соответствующего вида.

Метаданные документа либо отсутствуют, либо несовместимы, либо повреждены. Документ не соответствует стандарту 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 Ответ

0 голосов
/ 29 июня 2019

Как указано в комментариях:

1) Ошибка при сообщении «Словарь внешнего вида не содержит записи» - это ошибка в предварительном просмотре PDFBox, которая будет исправлена ​​в 2.0.17, см. PDFBOX-4586 .В соответствии с этим документом :

Валидатор ISO 19005-1 НЕ ДОЛЖЕН ИСПОЛЬЗОВАТЬ файлы, для которых в аннотации виджета отсутствует словарь внешнего вида

2) «Rdf: описание без атрибута rdf: about» может быть или не быть ошибкой. VeraPDF не считает его одним из них.Ваш код использовал версию 1.8. *.Для этого вы можете позвонить dcSchema.setAbout(""), чтобы это исправить.В 2.0. * Проблема не возникает, если вы создали схему с metadata.createAndAddDublinCoreSchema().

. Я создал проблему в проекте VeraPDF , и они поставят этот вопросдля обсуждения на следующем собрании технической рабочей группы по валидации .

3) То, что виджеты не содержали запись, связано с тем, что во время вызова setValue() не было достаточно информации (например, прямоугольник). Вот почему вы получили сообщение widget of field aa has no rectangle, no appearance stream created.

...