我正在使用飞碟库并尝试为字母的特定编码添加自定义字体。这样我就可以支持unicode字符。
这是我从飞碟库 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中,同样对于我尝试编码的其他字符。