気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
今回はiTextSharpで日本語を出力する方法を紹介します。

iTextSharpで日本語を出力する方法は2通りあります。
1つ目は、ローカルPCにインストールされている日本語のフォントファイルから
Fontオブジェクトを生成する方法です。

   Font font = new Font(
                 BaseFont.CreateFont(@"c:\windows\fonts\msgothic.ttc,0",
                          BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED)
                 , 20);

Fontオブジェクトの生成には、BaseFontクラスのCreateFontメソッドを使用します。
第一引数で、使用するフォントのフォントファイルを指定しています。ttcファイルは
複数のフォントが含まれるファイルですので、ファイル名の後に、[0]をインデックスと
して、指定しています。
上記サンプルでは「MS ゴシック 標準」フォントを指定しています。

第二引数は、文字エンコーディングを指定します。
日本語の場合は向きに応じて、「IDENTITY_H(横書き)」、「IDENTITY_V(縦書き)」の
いずれかを指定します。

第三引数には、フォントをPDFファイルに埋め込むかどうかを指定しています。

生成したフォントは「Paragraph」や「Chunk」に指定して、使用します。

   document.Add(new Paragraph("日本語出力のサンプルです。", font));

2つ目の方法は、標準で使用可能なビルトインフォントを使用する方法です。
「ビルトインフォント」を使用する場合は、「iTextAsian.dll」ファイルを
参照に追加しておく必要があります。「iTextAsian.dll」は以下のURLからダウンロード可能です。

http://sourceforge.net/projects/itextsharp/files/extras/extras%201.0/

※DLLバージョンを使用すると、「フォントを認識できない」というエラーが発生する場合がありますので、
ソース(iTextAsian-1.0.zip)をダウンロードして、ビルドしたものを使用した方が良いです。

「ビルドインフォント」を使用するためには、以下のようにして、BaseFontのリソースに
登録しておく必要があります。

   BaseFont.AddToResourceSearch("iTextAsian.dll");

staticメンバーのメソッドなので、プログラム実行中に付き、一度実行すればOKです。

ビルドインフォントのFontオブジェクトは以下のようにして生成します。

   Font font = new Font(
                BaseFont.CreateFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED)
                , 20);

こちらも同じくBaseFontクラスのCreateFontメソッドを使用します。
第一引数には使用するフォントを使用します。「iTextAsian.dll」には
以下の3つの日本語フォントが含まれています。
「HeiseiMin-W3」、「HeiseiKakuGo-W5」、「KozMinPro-Regular」

※標準フォントとして、インストールされているフォントはAcrobatの
バージョン毎に異なりますので、Readerで開いた際に、ここで指定された
フォントが存在しない場合は、Readerの判断で、それに応じたフォントが
使用されるようです。

第ニ引数には同じくエンコーディングを指定します。

日本語の場合は、次のいずれかを指定します。
「UniJIS-UCS2-H」、「UniJIS-UCS2-V」、「UniJIS-UCS2-HW-H」「UniJIS-UCS2-HW-V」

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://csfun.blog49.fc2.com/tb.php/98-0b264057

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。