我正在尝试在HTML中包含多种字体样式,以便使用以下代码段反映在我的代码中。当在font face标签中提到字体样式时,html文本不会被拾取以PDF格式显示。
String htmlText = value.trim();
ColumnText ct = new ColumnText(over);
List<AcroFields.FieldPosition> positions1 = form.getFieldPositions(key);
Rectangle rect = positions1.get(0).position;
ct.setSimpleColumn(rect.getLeft(), rect.getBottom(),rect.getRight(), rect.getTop());
Reader htmlreader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(htmlText.getBytes("UTF-8"))));
StyleSheet styles = new StyleSheet();
styles.loadTagStyle("body", "font", "Comic Sans MS");
List<Element> objects = HTMLWorker.parseToList(htmlreader,styles);
for (Element element : objects)
{
ct.addElement(element);
}
ct.go();
尽管提到它,StyleSheet类并没有反映PDF上的任何字体。它始终默认为Arial。
我要求Font tag的face属性中提到的字体应该反映在PDF中。在这种情况下我必须采用哪些方法。
答案 0 :(得分:1)
你注册了字体吗? iTextSharp不会扫描系统中的已安装字体,除非你告诉它,因为它可能导致性能/缓存噩梦。
FontFactory.Register("C:\\Windows\\Fonts\\comic.ttf", "Comic Sans MS");
您也可以告诉iTextSharp扫描您的字体文件夹,但我建议您不要这样做:
FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts")