私は、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