我认为我认为与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
时,我几乎解决了问题,同时将字体添加到渲染器,但是另一个字符从报告中消失了(™
- 商标徽标)
奇怪的部分:
使用这样的代码,当且仅当
字符打印在报告中的任何位置时,才会打印商标徽标。否则它只打印它的“空间”。
另外,如果我不添加BaseFont.IDENTITY_H
,则商标徽标可以正常使用,但
却没有。
我希望这不要太混淆!
似乎在打印
字符时,它会拉伸“字符窗口”,然后将商标徽标打印得很好。但我不确定这一点。
 - icon;
™ - company logo
答案 0 :(得分:0)
如何在底部添加一堆空格,然后让一个裁剪器 - 客户端 - 删除空格?
我就是这样解决的。