ПТИЧКА:отправитель pdf, загружайте / используйте шрифты по относительному пути или из файлов jar

StackOverflow https://stackoverflow.com/questions/255916

Вопрос

Я использую 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top