【发布时间】:2014-01-03 22:39:50
【问题描述】:
我无法让飞碟为我的主要字体中不存在的字形/字符使用辅助字体。
我为此目的使用的 Java 代码或多或少:
String result = getPrintHtmlContent(urlString);
result = CharacterConverter.replaceInvalidCharacters(result);
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver();
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "droidsans/DroidSans.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "droidsans/DroidSansBold.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.setDocumentFromString(result, "http://" + frontendHost + ":" + frontendPort + frontendContextRoot);
renderer.layout();
renderer.createPDF(os);
还有css:
body {
font-family: "Droid Sans", "Arial Unicode MS";
}
我还使用 @font-face 规则将字体包含在 css 中。
我可以分别使用其中一种字体来让它工作,所以飞碟找到字体或 css 渲染不正确似乎没有问题。
另一方面,如果我按照上述方式尝试使用两种字体,则输出 PDF 仅使用 Droid Sans...
是否可以像在网站上一样在飞碟中使用“后备字体”?
【问题讨论】:
标签: java html css pdf-generation flying-saucer