web-dev-qa-db-ja.com

iText、Font、BaseFont、createFont()はどうなっていますか?

フォントとベースフォントで何が起こっているのかについて、私には多くの謎があります。特にコンストラクターに関しては。 iText Webサイトでは、この行を新しいフォントのサンプルコードとして提供しています。

 BaseFont unicode = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", 
                        BaseFont.IDENTITY_H, 
                        BaseFont.EMBEDDED);

私はこの呼び出しを機能させることができます:

BaseFont bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.CP1257, 
                  BaseFont.EMBEDDED);

しかし、BaseFont.CP1257をBaseFont.HELVETICAに置き換えると、機能せず、「PDFドキュメントの読み込みに失敗しました」というページが表示されます。

クラスファイルを調べてみましたが、2番目のパラメータが何であるかがわかりません(HTMLのように、最初のフォントが機能しない場合のバックアップフォントのようなものだと思います)。一部のフォントが機能し、他のフォントが機能しない理由がわかりません。

11
Chase Roberts

Jar内からロードするには先頭のスラッシュを使用し、それ以外の場合は、フォントの絶対パス( "C:[ ...]\fonts\Sansation_Regular.ttf ")。例えば:

Font font = FontFactory.getFont("/fonts/Sansation_Regular.ttf",
    BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.NORMAL, BaseColor.BLACK);
BaseFont baseFont = font.getBaseFont();
8
4F2E4A2E

2番目のパラメーターはエンコーディングです。

詳細については、こちらのドキュメントを参照してください。

4
billfredtom

これは私のために働いたものです。古い投稿ですが、簡単な答えが見つかりませんでした。

//Here you setup the font that you want. I put it under the root/Content/fonts folder in my project
Font font = FontFactory.GetFont("~/Content/fonts/ARIALN.ttf", BaseFont.CP1252,false, 9);

//Here I create the paragraph then assign the font to it at the end
var addressAttn = new Paragraph("Attn:  Manager, Billing Services", font);
0
David Hobbs