ПТИЧКА:отправитель pdf, загружайте / используйте шрифты по относительному пути или из файлов jar
Вопрос
Я использую BIRT с ранних дней, и у меня до сих пор есть загадки относительно PDF emitter.
Короткий рассказ:Могу ли я настроить fontsConfig.xml для загрузки шрифтов по относительному пути или из jars?
Долгая история: Мы используем как FOP, так и BIRT для создания PDF-файлов в нашем веб-приложении.Было бы неплохо совместно использовать шрифты между библиотеками.К сожалению, я не могу найти способ сделать это с помощью BIRT 2.3.1
Корень зла в том, fontsConfig.xml Если я настрою его, как показано ниже, он будет работать нормально:
<font-paths>
<path path="fonts"/>
</font-paths>
Но path не позволяет мне использовать ни относительные пути, ни classpath (или я не могу найти подходящий способ его настройки).Ни config1, ни config2 не работают.
Конфигурация 1:
<font-paths>
<path path="../fonts"/>
</font-paths>
Конфигурация 2:
<font-paths>
<path path="classpath:fonts"/>
</font-paths>
Любые мысли будут оценены по достоинству.
Решение
В некоторых версиях BIRT вы можете использовать системное свойство "birt.font.dirs".Это отменяет fontsConfig.xml .
Что ж, когда-то это работало, но, очевидно, позже это было удалено из исходного кода BIRT.
Теперь вы можете вызвать что-то вроде
EngineConfig engineConfig = new EngineConfig();
URL fontsConfigurationURL = new URL("file:///path/to/my/fontsConfig.xml");
engineConfig.setFontConfig(fontsConfigurationURL);
Platform.startup(engineConfig);
Это позволяет вам поставлять BIRT настроенную версию fontsConfig.xml, не копаясь в банках.
Протестировано с BIRT 4.3.0.
Другие советы
Существует способ разместить шрифты по относительному пути для использования в Birt.
Все, что вам нужно сделать, это скопировать шрифты в нужное место в вашем веб-приложении.Мой был в :C:\\src\main\webapp eports
Теперь в приложении используйте следующую команду, чтобы зарегистрировать шрифты из вышеупомянутого расположения.
FontFactory.registerDirectory( scContext.getRealPath("/Reports") );
Это позволит зарегистрировать шрифт.
Протестировано на Birt 4.3 через Spring MVC