0

我有我认为与 IText 中的编码有关的东西。

我在 xsl 中开发了一份报告,并希望从自定义 .otf 文件中打印一些特殊字符。

首先是 .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;- 商标徽标)

奇怪的部分:使用像 I 这样的代码,当且仅当&#xf000;字符打印在报告中的任何位置时,实际打印商标徽标。否则它只会打印它的“空间”。另外,如果我不添加BaseFont.IDENTITY_H,商标标志可以正常工作,但&#xf000;不能。

我希望这不会太混乱!

似乎在&#xf000;打印字符时它会拉伸“字符窗口”,因此商标徽标打印得很好。但我不确定这一点。

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

1 回答 1

0

在底部添加一堆空格然后让裁剪器 - 客户端 - 删除空格怎么样?

这就是我将如何解决它。

于 2013-03-08T09:18:17.973 回答