1

iTextSharp を使用してカスタム フォントを使用して PDF を作成していますが、ユニコード文字 2120 (SM、サービス マーク) に関する問題が発生しています。問題は、グリフがカスタム フォントにないことです。PDF のフィールドにフォールバック フォントを指定する方法はありますか? Verdana を使用してテキスト フィールドを追加して、フォームにセカンダリ フォントを埋め込もうとしましたが、効果がないようでした。

4

1 に答える 1

2

まず、必要な文字を含むフォント (ttf、otf、...) を見つける必要があります。次に、FontSelectorクラスを使用して、使用するさまざまなフォントをこのセレクターに追加できます ( FontSelectionExampleを参照)。これで、すべての文字列を処理できます:

FontSelector selector = new FontSelector();
selector.addFont(f1);
selector.addFont(f2);
Phrase ph = selector.process(some_string);

は、最初のフォントで使用可能なすべてのグリフのフォント付きの と、 ではフォントにできなかったが に存在するグリフのフォント付きのFontSelectorで構成されるフレーズを返します。Chunkf1Chunkf2f1f2

この例の C# ポートが必要な場合は、第 11 章を参照してください。

アップデート

a の使用はFontSelector、フォームのコンテキストでも機能します (AcroForm テクノロジについて話している限り)。とても簡単です: フォームに代替フォントを追加するだけです:

AcroFields form = stamper.getAcroFields();
form.addSubstitutionFont(bf1);
form.addSubstitutionFont(bf2);

フォームで定義されたフォントが優先されるようになりましたが、そのフォントが特定のグリフを表示できない場合は、bf1、次に atbf2などを調べます。この機能を示す例をここで見つけることができます。

最初の例と 2 番目の例には違いがあることに注意してください。最初の例ではFontオブジェクトを使用し、2 番目の例ではオブジェクトを使用しBaseFontます。

于 2013-11-08T10:11:50.850 に答える