Как отображать символы Unicode (Hex) в сгенерированном файле PDF из ITextRenderer и тамплета HTML Thymeleaf - PullRequest
0 голосов
/ 11 октября 2018

Я использую код для создания PDF-файла из HTML-шаблона Thymeleaf с этого веб-сайта [Преобразовать Thymeleaf в PDF] [1].

Я получаю очень хороший PDF, носталкивается с одной незначительной проблемой.Я показываю цену продуктов в формате PDF для нескольких валют и использую этот справочный веб-сайт [символы валют с Unicode (Hex)] [1], чтобы получить значение Unicode (Hex) для другой валюты.

Код моего файла .java

context.setVariable("currencySymbol","₹");  // this is Unicode for Indian rupee sysmbol

Ниже приведен код шаблона моего тимелического листа

<td th:utext="${currencySymbol} + ' ' +  ${#numbers.formatDecimal(product.price, 0, 'COMMA', 2, 'POINT')}"> </td> 

, он работает нормально и показывает символы валют для всех, кроме Индийской рупии и Дирхама Объединенных Арабских Эмиратов.

Пожалуйста, предложите мне, как я могу отобразить символы валюты дирхам Индийской рупии и дирхама ОАЭ в моем сгенерированном PDF.

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

** Примечание: - Если естьлюбой новый способ создания PDF из шаблона HTML Thymeleaf, пожалуйста, сообщите мне **

1 Ответ

0 голосов
/ 14 октября 2018

Проблема в том, что используемый по умолчанию шрифт не поддерживает символы, которые вы хотите напечатать.Чтобы заставить его работать, вы можете встроить другой шрифт, который может отображать этот символ, например DejaVu .

Сначала вы должны загрузить файл шрифта DejaVu, а затем объявить этот шрифт в своем классе java:

    ITextRenderer renderer = new ITextRenderer();
    renderer.getFontResolver().addFont("font/dejavu-sans/DEJAVUSANS.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

И используйте этот шрифт в своем HTML-документе, например, с:

    td {font-family: DejaVu Sans;}
...