2017-02-13 5 views
0

Я работаю над проектом, который включает метаданные на каждую страницу существующего PDF (стандарт PDF/A3). У меня есть xml-файлы столько же, сколько количество страниц, программа будет вставлять соответствующий XML-файл в метаданные на страницу.Как заполнить xmp в/Запись метаданных страниц PDF

Пока что моя программа добавляет запись/метаданные на каждую страницу, используя iText 5, и я также могу добавить простую строку или текст в запись метаданных на каждой странице, и она может отображаться в формате PDF древовидная структура в Adobe Acrobat Pro. Вот мой код, где при добавлении записи/метаданных на странице:

 writer.addPageDictEntry(PdfName.METADATA, new PdfString("123")); 

Проблема до сих пор является, как добавить XML в записи/метаданных? Мои xml-файлы - это некоторые простые древовидные структуры, я не знаю, как конвертировать xml-файлы в PdfObject. По сайтам разработчиков iText он говорит, что запись/Метаданные на каждой странице должна содержать ссылку на xmp, я не знаю, как это сделать. Должен ли я вставлять все xml-файлы вместе и передавать ссылку на часть в каждую запись?

This screenshot of acrobat pro shows what my program can do so far, click here to see the pic

ответ

0

Метод addPageDictEntry() не то, что вам нужно. Вы должны попробовать метод setPageXmpMetadata(). См. API docs.

Этот метод принимает byte[]. Убедитесь, что byte[] содержит правильные данные XMP. Метод будет выполнять весь тяжелый подъем внутрь. То есть: он создаст объект потока, который содержит XML, и добавит ссылку из словаря страницы в этот объект потока. Как вы, наверное, знаете, в PDF-формате запрещено использовать поток PDF в качестве прямого объекта.

Если вы хотите сделать это нелегкий путь, создавая поток объекта самостоятельно, получая ссылки, добавив его в PdfWriter, а затем использовать эту ссылку в качестве значения записи в словаре странице, вы может найти вдохновение в ответе на этот вопрос: How do I add XMP metadata to each page of an existing PDF using iTextSharp (или this example), но метод короткой вырезки должен быть намного проще в использовании.

+0

Спасибо за ваш ответ !! Это очень поможет! Прямо сейчас, я понял, что заполнение xmp на PDF-страницах. Но есть новая проблема, с которой я встречался, я устал проверять свой PDF независимо от того, является ли он подлинным PDF/A или нет Adobe Acrobat CC. Однако программное обеспечение говорит мне, что мой PDF-файл не является истинным PDF/A-3A, сообщение об ошибке: «Свойство XMP предопределено, но не используется в соответствии с определением (XMP 2005)». Свойством ошибки является «http://purl.org/dc/elements/1.1/dc:title». Я смущен этим, так как я не знаю, как решить эту проблему. –

+0

Как можно ответить на этот вопрос, не видя PDF? Я могу только догадываться, что у вас есть разница между метаданными в словаре '/ Info' и метаданными в XMP. –

+0

Привет, Бруно, я загрузил свой тестовый pdf-файл на эту ссылку Dropbox ниже. Пожалуйста, проверьте это, я не знаю, как пройти проверку достоверности PDF/A-2B. https://www.dropbox.com/s/wibx73w99utbmmp/Univ.Of.Arizona_Libraries_azu_acku_z3016_ray29_1349_merged.pdf?dl=0 –

Смежные вопросы