Как отобразить символы Unicode (Hex) в сгенерированном PDF-файле из ITextRenderer и тамплета HTML Thymeleaf
Я использую код для создания 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 ответ
Проблема в том, что используемый по умолчанию шрифт не поддерживает символы, которые вы хотите напечатать. Чтобы заставить его работать, вы можете встроить другой шрифт, который может отображать этот символ, например, 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;}