Я использую библиотеку «летающая тарелка» и пытаюсь добавить собственный шрифт для конкретной кодировки букв.Чтобы я мог поддерживать символы Юникода.
Вот ссылка на решение, которое я следую из официального руководства библиотеки летающих тарелок http://flyingsaucerproject.github.io/flyingsaucer/r8/guide/users-guide-R8.html#xil_33. Ниже приведен код,
public void convertHtmlToPdf(String html, String css, OutputStream out) {
try {
html = correctHtml(html);
html = getFormedHTMLWithCSS(html, css);
HtmlCleaner cleaner = new HtmlCleaner();
TagNode rootTagNode = cleaner.clean(html);
CleanerProperties cleanerProperties = cleaner.getProperties();
XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
String cleanedHtml = xmlSerializer.getAsString(rootTagNode);
File fontFile = new File("/Verdana.ttf");
FontFactory.register(fontFile.getAbsolutePath());
ITextRenderer r = new ITextRenderer();
r.getFontResolver().addFont(fontFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
r.setDocumentFromString(cleanedHtml);
r.layout();
r.createPDF(out);
r.finishPDF();
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
}
Но все же я не могу кодировать определенные символы.Например,
'■' : '■',
'▲' : '▲',
Для '■' я получаю & x25a0;в сгенерированном PDF, а также для других символов, которые я пытаюсь кодировать.