我有我认为与 IText 中的编码有关的东西。
我在 xsl 中开发了一份报告,并希望从自定义 .otf 文件中打印一些特殊字符。
首先是 .xsl 代码
<span class="symbol card-logo"></span>
之后,.xsl 代码被转换为 HTML。HTML 代码在浏览器中运行良好,包含我想要的所有字符。但在那之后,我将 HTML 字符串传递给 ITextRenderer。
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont(otfFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
byte[] bytes = htmlDocumentString.toString().getBytes("UTF-8");
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource(bais);
Document doc = builder.parse(is);
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(outputStream);
outputStream.flush();
outputStream.close();
当我添加BaseFont.IDENTITY_H
, 同时将字体添加到渲染器时,我几乎解决了这个问题,但随后另一个字符从报告中消失了(™
- 商标徽标)
奇怪的部分:使用像 I 这样的代码,当且仅当
字符打印在报告中的任何位置时,实际打印商标徽标。否则它只会打印它的“空间”。另外,如果我不添加BaseFont.IDENTITY_H
,商标标志可以正常工作,但
不能。
我希望这不会太混乱!
似乎在
打印字符时它会拉伸“字符窗口”,因此商标徽标打印得很好。但我不确定这一点。
 - icon;
™ - company logo