2012-09-26 221 views
0

我有什么,我相信一些是在iText的有关编码。iText的特殊字符编码

我开发了XSL的报告,并希望从一个自定义的杂项文件文件打印一些特殊字符。

首先的.xsl代码

<span class="symbol card-logo">&#xf000;</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,同时加入了字体的渲染,但随后另一个字符从报告中消失(在&#8482; - 商标图案)

怪异的一部分: 使用这样的代码,只有在报告中的任何位置打印了&#xf000;字符,商标徽标才会被打印出来。否则,它只会打印它的“空间”。 另外,如果我不添加BaseFont.IDENTITY_H,商标标识工作正常,但&#xf000;没有。

我希望这不是太混淆!

好像印在&#xf000;字符时,它延伸了“字符窗口”所以后来的商标图案印刷精美。但我不确定这一点。

&#xf000 - icon; 
&#8482 - company logo 

回答

0

如何在底部添加一串空白,然后让一个裁剪器 - 客户端 - 删除空白?

这是我会怎么解决这个问题。