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 に答える