Не удается заставить работать пример PDFBox CreatePDFA — цветовой профиль не найден

Я пытаюсь получить пример для создания документа PDF/A с помощью Apache PDFBox (CreatePDFA.java).

Для этого я скопировал примерный класс как есть в модуль проекта, который включает зависимость maven от PDFBox в версии 2.0.0-RC3. Я только изменил сигнатуру метода и использовал фиксированный шрифт, имя файла и сообщение вместо args[].

При попытке запустить код я получаю NPE в строке 107, потому что он не может загрузить цветовой профиль (InputStream имеет значение null). Когда я проверяю включенную библиотеку в деталях проекта, я вижу папку ресурсов, но она не содержит ожидаемый файл, а именно "pdfa/sRGB Color Space Profile.icm".

Скриншот ресурсов PDFBox в проекте

К сожалению, гугление проблемы только обнаружило больше ссылок на всегда одну и ту же реализацию примера, но через некоторое время я действительно нашел то, что кажется нужным файлом на apache.googlesource.com

Я скопировал файл в наш собственный каталог ресурсов, а затем использовал эту строку кода:

InputStream colorProfile = CreatePdfA.class.getResourceAsStream("/pdfa/sRGB Color Space Profile.icm");

Это, наконец, остановило NPE - файл, по-видимому, найден, но теперь я получаю другое исключение, которое говорит:

java.lang.IllegalArgumentException: Invalid ICC Profile Data

Здесь я застрял. Я надеялся, что это будет работать сразу из коробки, но, похоже, я что-то упускаю. Любые идеи?


person Louise    schedule 11.02.2016    source источник
comment
поместите его в свой собственный каталог ресурсов правильно. Но не используйте загрузку Google, используйте файл из загрузки исходного кода на сайте pdfbox.   -  person Tilman Hausherr    schedule 11.02.2016
comment
вот профиль icc, если вы не хотите загружать исходники: svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/resources/   -  person Tilman Hausherr    schedule 11.02.2016
comment
Упс, теперь я вижу, что ваша ссылка ведет на зеркало svn. Однако всего несколько дней назад мне удалось создать сервлет, и я просто скопировал файл в свой каталог ресурсов. Интересно, случилось ли что-то подобное, чтобы профиль icc был преобразован в ascii.   -  person Tilman Hausherr    schedule 11.02.2016
comment
Просто загрузил файл, который вы связали, и он работает. Может быть, опубликовать ответ, чтобы я мог принять его? :)   -  person Louise    schedule 12.02.2016
comment
Выполнено. Рад слышать, что это сработало.   -  person Tilman Hausherr    schedule 12.02.2016


Ответы (1)


Вы уже сами ответили на одну часть проблемы: поместите файл в каталог ресурсов.

Второй проблемой может быть плохое зеркало репозитория или проблема с переносом (двоичный файл в ascii). Вот официальный URL-адрес репозитория с профилем ICC из примера: https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/resources/org/apache/pdfbox/resources/pdfa/

person Tilman Hausherr    schedule 12.02.2016