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()
}
}
Есть предложения?