java - 如何为特定编码指定字体?
问题描述
我正在使用飞碟库并尝试为特定的字母编码添加自定义字体。这样我就可以支持 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 中,对于我尝试编码的其他字符也是如此。
解决方案
推荐阅读
- jmeter - Jmeter 响应断言
- python-3.x - 如何在 Python 中将 h5 文件转换为 GIF
- c# - 如何知道当前的键盘是不是美国国际键盘?
- python - 在 Python 中加速斯坦福依赖解析
- azure - 修改/更换探针导致 CannotModifyRuleUsedByProbeUsedByVMSS
- azure - 创建 QnA 聊天机器人 Azure 时部署失败
- linux - 构建带有用于测试数据的卷的docker镜像(centos)(postgresql)
- python - POST 后反转 (NoReverseMatch)
- scala - 无法在 IntelliJ 中导入 spark mllib
- macos - 204 状态代码不适用于带有 HTTP 2.0 的 Safari 11.1