2013-05-30 39 views
5

iTextを使用して漢字でPDFを作成しています。私は、指定されたフォントは、 漢字でPDFを生成するためのiText

FontFactory.registerDirectory("c:/windows/Fonts/"); 

new Phrase("Asian 汉字/漢字 characters", FontFactory.getFont("MS Mincho", 16, Font.NORMAL)); 

コードは以下適宜(すなわちヌルでない)MS明朝フォントを検索し、私はコードを使用してロードされていたが

FontFactory.getFont("MS Mincho", 16, Font.NORMAL) 

、生成されたPDF MS明朝のみASCIIテキスト "Asian characters"を表示します。つまり、中国語の文字はPDFに表示されません。

生成されたPDFに中国語の文字が欠けている理由は何ですか?ここ

+1

あなたがa)は、適切な[エンコーディング]でフォントを使用することを確認する必要があります使用(http://itextpdf.com/themes/keyword.php?id=394) ( 'BaseFont.IDENTITY_H')とb)[embed](http://itextpdf.com/themes/keyword.php?id=71)it(' BaseFont.EMBEDDED')を使用してください。 [iText in Action - 2nd Edition](http://itextpdf.com/book/)の[chaptrer 11](http://itextpdf.com/book/chapter.php?id=11)のサンプルに触発されてください。 。 – mkl

+1

ありがとうございます。生成されたPDFは、漢字を正しく表示するようになりました。 FontFactory.registerDirectory()を呼び出す必要はありません。 BaseFont.createFont( "c:/windows/Fonts/MSMINCHO.TTF"、BaseFont.IDENTITY_H、BaseFont.EMBEDDED)を使って、Font(BaseFont、size)をインスタンス化するだけです。 FontFactory.getFont( "MS Mincho")は中国語の文字では機能しません。 –

+1

実際には、 'FontFactory'を同様に使用して、適切にパラメータ化されたフォントオブジェクトを作成することができます。しかし、本当に、あなたはそれを必要としません。 – mkl

答えて

2

問題はコメントで解決されたように、解像度:

あなたはa)の適切なencoding(BaseFont.IDENTITY_H)でフォントを使用することを確認する必要があり、およびb)embedそれは(BaseFont.EMBEDDED )。 samples from chapter 11iText in Action — 2nd Editionに触発されてください。

BaseFont bf = BaseFont.createFont("c:/windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font f = Font(bf, size); 

は今、これはFont f.

関連する問題