Не удается получить пример 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".
К сожалению, проблема Google обнаружила только больше ссылок на всегда одну и ту же примерную реализацию, но через некоторое время я нашел на apache.googlesource.com файл, который кажется мне нужен.
Я скопировал файл в наш собственный каталог ресурсов, а затем использовал эту строку кода:
InputStream colorProfile = CreatePdfA.class.getResourceAsStream("/pdfa/sRGB Color Space Profile.icm");
Это наконец остановило NPE - файл, очевидно, найден - но теперь я получаю еще одно исключение, которое говорит:
java.lang.IllegalArgumentException: Invalid ICC Profile Data
Здесь я застрял. Я надеялся, что это сработает просто из коробки, но, похоже, я что-то упустил. Есть идеи?
1 ответ
Вы уже ответили на одну часть проблемы самостоятельно: поместите файл в каталог ресурсов.
Вторая проблема может быть плохим зеркалом репозитория или проблемой передачи (от двоичного к ascii). Вот официальный URL-адрес хранилища с профилем ICC из примера: https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/resources/org/apache/pdfbox/resources/pdfa/