iTextSharp を使用してカスタム フォントを使用して PDF を作成していますが、ユニコード文字 2120 (SM、サービス マーク) に関する問題が発生しています。問題は、グリフがカスタム フォントにないことです。PDF のフィールドにフォールバック フォントを指定する方法はありますか? Verdana を使用してテキスト フィールドを追加して、フォームにセカンダリ フォントを埋め込もうとしましたが、効果がないようでした。
1 に答える
まず、必要な文字を含むフォント (ttf、otf、...) を見つける必要があります。次に、FontSelector
クラスを使用して、使用するさまざまなフォントをこのセレクターに追加できます ( FontSelectionExampleを参照)。これで、すべての文字列を処理できます:
FontSelector selector = new FontSelector();
selector.addFont(f1);
selector.addFont(f2);
Phrase ph = selector.process(some_string);
は、最初のフォントで使用可能なすべてのグリフのフォント付きの と、 ではフォントにできなかったが に存在するグリフのフォント付きのFontSelector
で構成されるフレーズを返します。Chunk
f1
Chunk
f2
f1
f2
この例の C# ポートが必要な場合は、第 11 章を参照してください。
アップデート
a の使用はFontSelector
、フォームのコンテキストでも機能します (AcroForm テクノロジについて話している限り)。とても簡単です: フォームに代替フォントを追加するだけです:
AcroFields form = stamper.getAcroFields();
form.addSubstitutionFont(bf1);
form.addSubstitutionFont(bf2);
フォームで定義されたフォントが優先されるようになりましたが、そのフォントが特定のグリフを表示できない場合は、bf1
、次に atbf2
などを調べます。この機能を示す例をここで見つけることができます。
最初の例と 2 番目の例には違いがあることに注意してください。最初の例ではFont
オブジェクトを使用し、2 番目の例ではオブジェクトを使用しBaseFont
ます。