Java, экспорт Jasper PDF, объединение OpenSansEmoji с DejaVuSans - PullRequest
0 голосов
/ 04 сентября 2018

Что ж, я пытаюсь экспортировать один PDF-файл, который будет содержать текстовое поле, содержащее как обычные латинские символы, так и смайлики. Текст вводится пользователем через HTML-форму, в которой я могу подтвердить, что смайлики правильно отображаются в браузере, даже если я повторно получаю их со стороны Java (считая, что символы могут быть повреждены). К сожалению, я до сих пор не получил ожидаемый результат, хотя я попытался выполнить действия, описанные в community.jaspersoft.

Что я пробовал:

Экспортировал один jar-файл, содержащий все шрифты (ttfs) из JasperSoft Studio, скомпилировал jrxml и включил оба в classpath, но смайлики все еще появляются в PDF как пробелы.

Ttf, который я использовал для эмодзи, был загружен с этой ссылки на github и dejavu с здесь

Что я не пробовал:

  • Объединить все шрифты в один ттф (это возможно?)
  • Экспорт текста в виде необработанного изображения, а не текстового поля внутри jrxml (опять же, не уверен, что это возможно)

Итак, главный вопрос в том, возможно ли это или нет, потому что я вижу, что другие ищут ту же самую проблему без правильного ответа, и если нет, могу ли я попробовать еще что-нибудь?

Заранее спасибо.

1 Ответ

0 голосов
/ 04 сентября 2018

Существует файл fonts / fontsfamily [someRandomNumber] .xml в JAR с шрифтом TTF, экспортированным из JasperSoft Studio. Посмотрите в файл и убедитесь, что pdfEmbedded установлено на true и pdfEncoding установлено на Identity-H.

Например, в моем случае не было элемента pdfEncoding, а затем символы эмодзи отображались как пробелы, но когда я добавил <pdfEncoding>Identity-H</pdfEncoding> символы эмодзи были отображены правильно.

Вот пример этого XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="OpenSansEmoji">
        <normal>fonts/OpenSansEmoji/OpenSansEmoji.ttf</normal>
        <pdfEmbedded>true</pdfEmbedded>
        <pdfEncoding>Identity-H</pdfEncoding>
        <exportFonts/>
    </fontFamily>
</fontFamilies>

Или вы можете сделать это в JasperSoft Studio, отредактировав свойства семейства шрифтов и затем новый экспорт JAR: JasperSoft Studio - Font Family properties

...