Чтение конфигурации и шрифтов Apache FOP в контейнере схемы OSGi.

У меня есть контейнер схемы OSGi с зависимостью Apache FOP. Когда я генерирую PDF с конфигурацией по умолчанию, возникают проблемы с русскими символами (#### вместо текста). В тестовом приложении, отличном от OSGi, эту проблему легко решить: я использую пользовательский файл конфигурации fop.xconf и два файла шрифтов arial*.ttf в одном каталоге. Автоматическое определение в fop.xconf также устраняет эту проблему.

Но в контейнере OSGi blueprint я не могу прочитать файл conf из ресурсов пакета. Может ли кто-нибудь показать мне пример, как читать xconf и шрифты из контейнера чертежей? Или как программно настроить шрифты без чтения ресурсов.


person antropoff    schedule 09.07.2016    source источник


Ответы (1)


Итак, я нашел решение. Мы не можем использовать File() с путем "bundleresource://...", но можем использовать URI():

        URL url = getClass().getClassLoader().getResource(FOP_XCONF_FILE);
        fopFactory = FopFactory.newInstance(url.toURI(), url.openStream());

В этом случае мы открываем входной поток conf-файла из ресурсов нашего бандла и передаем его в специальное определение FopFactory.newInstance(). Fop.xconf XML с элементом работает как шарм.

person antropoff    schedule 12.07.2016