Как создать простейший PDFA 2b с помощью Apache PDFBox, совместимый с VeraPDF?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как создать простейший PDFA 2b с помощью Apache PDFBox, совместимый с VeraPDF?

Сообщение Anonymous »

Я использую Apache PDFBox для создания очень простого PDF-файла с одной строкой текста, соответствующего PDFA 2b, и я хочу использовать VeraPDF для проверки этого PDF-файла на соответствие. Вера сообщает мне, что PDF-файл не соответствует требованиям, и показывает два неверных утверждения:
  • Код: Выделить всё

    TestAssertion [ruleId=RuleId [specification=ISO 19005-2:2011, clause=6.6.2.1, testNumber=1], status=failed, message=The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2., location=Location [level=CosDocument, context=root/document[0]], locationContext=null, errorMessage=null]
  • Код: Выделить всё

    TestAssertion [ruleId=RuleId [specification=ISO 19005-2:2011, clause=6.2.4.3, testNumber=4], status=failed, message=DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present., location=Location [level=CosDocument, context=root/document[0]/pages[0](4 0 obj PDPage)/contentStream[0](6 0 obj PDContentStream)/operators[3]/fillCS[0]], locationContext=null, errorMessage=null]
Мой код выглядит примерно так:

Код: Выделить всё

try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); PDDocument document = new PDDocument(); COSStream cosStream = new COSStream()) {
PDPage page = new PDPage();
document.addPage(page);

PDDocumentInformation documentInformation = new PDDocumentInformation();
documentInformation.setTitle("Name");
documentInformation.setCreator("Creator");
documentInformation.setSubject("Subject");
document.setDocumentInformation(documentInformation);

try (ByteArrayOutputStream xmpOutputStream = new ByteArrayOutputStream(); OutputStream cosXMPStream = cosStream.createOutputStream()) {
XMPMetadata xmp = XMPMetadata.createXMPMetadata();
PDFAIdentificationSchema pdfaSchema = xmp.createAndAddPFAIdentificationSchema();
pdfaSchema.setPart(2);
pdfaSchema.setConformance("B");
DublinCoreSchema dublinCoreSchema = xmp.createAndAddDublinCoreSchema();
dublinCoreSchema.setTitle("Name");
dublinCoreSchema.addCreator("Creator");
dublinCoreSchema.setDescription("Subject");
XMPBasicSchema basicSchema = xmp.createAndAddXMPBasicSchema();
Calendar creationDate = Calendar.getInstance();
basicSchema.setCreateDate(creationDate);
basicSchema.setModifyDate(creationDate);
basicSchema.setMetadataDate(creationDate);
basicSchema.setCreatorTool("Creator Tool");
new XmpSerializer().serialize(xmp, xmpOutputStream, true);
cosXMPStream.write(xmpOutputStream.toByteArray());
document.getDocumentCatalog().setMetadata(new PDMetadata(cosStream));
}

PDViewerPreferences prefs = new PDViewerPreferences(page.getCOSObject());
prefs.setDisplayDocTitle(true);
document.getDocumentCatalog().setViewerPreferences(prefs);

File fontFile = new File("C:\\Windows\\Fonts\\arial.ttf");
PDType0Font font = PDType0Font.load(document, fontFile);

PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello PDF/A-2b World!");
contentStream.endText();
contentStream.close();

document.save(baos);
try (PDFAParser parser = Foundries.defaultInstance().createParser(new ByteArrayInputStream(baos.toByteArray()), PDFAFlavour.PDFA_2_B)) {
PDFAValidator validator = Foundries.defaultInstance().createValidator(PDFAFlavour.PDFA_2_B, false);
ValidationResult result = validator.validate(parser);
System.out.println(result.isCompliant());
}
}
Когда я проверяю сгенерированный PDF-файл с помощью debugger-app-2.0.31.jar, я могу найти метаданные. Когда я сравниваю метаданные с pdf-файлом из регрессионного теста VeraPDF (например, с этим), единственное различие, которое мне кажется актуальным, - это тег Begin="". В тестовом файле vera

Подробнее здесь: https://stackoverflow.com/questions/784 ... -compliant
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Установка соответствия Pdfa с помощью JasperReports в Java не создает PDF-файл с соответствующим соответствием.
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Itext7 – Как добавить встроенный файл с ключами f и uf в pdfa
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Простейший алгоритм оценки покерной руки
    Гость » » в форуме JAVA
    0 Ответы
    62 Просмотры
    Последнее сообщение Гость
  • Простейший алгоритм оценки покерной руки
    Гость » » в форуме JAVA
    0 Ответы
    93 Просмотры
    Последнее сообщение Гость
  • Простейший алгоритм оценки покерной руки
    Anonymous » » в форуме JAVA
    0 Ответы
    97 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»