Как узнать, претендует ли документ на PDF / A, используя itext - PullRequest
3 голосов
/ 17 февраля 2011

Я бы по крайней мере проверил, утверждает ли документ, что он соответствует PDF / A.

Как я могу это сделать, используя iText?

Ответы [ 4 ]

7 голосов
/ 18 февраля 2011

Ах.Спецификация PDF / A содержит «Ответ» (который не принесет вам пользы, если кто-то не заплатит за него деньги).Вы можете выкопать ту же информацию из источника iText ... что на самом деле может быть проще.Чтение этой спецификации стоит избегать, если это вообще возможно.;)

Прежде всего, iText предоставит вам метаданные xml, но пакет "xmp" предназначен только для чтения XMP, так что iText может изменить его по мере необходимости, прежде чем сохранить его снова.На самом деле он не содержит никаких функций "get".Замените, установите, сохраните ... no "get".

Таким образом, вы получите метаданные XMP следующим образом:

PdfReader reader = new PdfReader(pdfPath);
byte metaBytes[] = reader.getMetadata();

Выбор библиотеки psfaid зависит от вашей библиотеки синтаксического анализа XML.: соответствие "значение (" A "или" B ") из.XPath было бы хорошо.Я не уверен, является ли это значением элемента тела или атрибутом.Я склоняюсь к элементу: <pdfaid:conformance>A</pdfaid:conformance>

Если вы готовы урезать углы и если документ так же объявляет пространство имен pdfaid (http://www.aiim.org/pdfa/ns/id),, это безопасная ставка, он собирается использовать еготребовать А или Б.

3 голосов
/ 22 ноября 2012

Получить метаданные XML (не байт []):

 PdfReader reader = new PdfReader("hello.pdf");
 String xmlMetadata = new String( reader.getMetadata() );
0 голосов
/ 08 сентября 2011

Чтобы сделать больше и проверить, соответствует ли документ, вы можете использовать https://github.com/gba-awl/padaf для проверки на соответствие тестовам Isartor.См. Также Как проверить документ PDF, если он соответствует стандарту PDF / A?

0 голосов
/ 17 февраля 2011

с помощью фильтра расширений и расширения для файлов PDF / A .pdf

...