ここ数か月、フォント Courier を使用して、何千もの pdf を生成しました (開発中は Windows 7、テストと運用中は OpenSuse)。
これで、Arial を使用するという目標が達成されました。そこで、プロパティ ファイルでフォント名を変更したところ、次の例外が発生しました。
スタックトレース スニペット: com.itextpdf.text.DocumentException: 'Cp1252' のフォント 'Arial' は認識されません。com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:708) com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:615) com.itextpdf.text.pdf.BaseFont.createFont (BaseFont.java:450)
しばらくグーグルで調べた後、解決策を見つけました。設定で「Arial.ttf」(ファイル名など)を使用するだけです。しかしその後、別の例外が発生しました。
java.io.IOException: Arial.ttf not found as file or resource. at com.itextpdf.text.io.RandomAccessSourceFactory.createByReadingToMemory(RandomAccessSourceFactory.java:224) at com.itextpdf.text.io.RandomAccessSourceFactory.createBestSource(RandomAccessSourceFactory.java:173) at com.itextpdf.text.pdf.RandomAccessFileOrArray.<init>(RandomAccessFileOrArray.java:147) at com.itextpdf.text.pdf.TrueTypeFont.process(TrueTypeFont.java:625) at com.itextpdf.text.pdf.TrueTypeFont.<init>(TrueTypeFont.java:369) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:699) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:615) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:450)
つまり、itextpdf が現在ファイルを探しているというヒントがあります。そのため、ファイル名を構成に入力しましたC:\\Windows\\Fonts\\Arial.ttf
。今それは動作します!
しかし、目標はフォント名として「Arial」を使用することです。出来ますか?
どうもありがとう!