レンダラの仕様

RapidReportには以下のレンダラが用意されており、 利用するレンダラによって帳票の出力形式を変えることができます。

ここでは、各レンダラの詳細な仕様について説明します。

PDFレンダラの仕様

PDF形式で帳票を出力するには、PdfRendererオブジェクトを利用します。 そのコンストラクタは、以下の形式になっています。

  // C#
  PdfRenderer renderer = new PdfRenderer(stream);
  PdfRenderer renderer = new PdfRenderer(stream, setting);
  ' VisualBasic
  Dim renderer As New PdfRenderer(stream)
  Dim renderer As New PdfRenderer(stream, setting)
  // Java
  PdfRenderer renderer = new PdfRenderer(stream);
  PdfRenderer renderer = new PdfRenderer(stream, setting);

1つ目の引数には出力先を表すストリームオブジェクトを渡します。

2つ目の引数にはPdfRendererSettingというオブジェクトを渡します。 PdfRendererSettingは、PDF出力に関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。

PdfRendererSettingオブジェクトは以下の設定項目をメンバとして持っています。

項目 説明
ElementRendererMap
DummyElementRenderer
利用される要素レンダラのハッシュです
キーが見つからない場合、DummyElementRendererが利用されます
FontMap
DefaultFont
利用されるフォントのハッシュです
フォントを指定するためのキーと
iTextのcom.lowagie.text.pdf.BaseFontオブジェクトの組を格納します
キーが見つからなければ、DefaultFontが利用されます
GaijiFontMap
GaijiFont
外字領域(UnicodeでのU+E000からU+F8FF)に含まれる文字を表示するためのフォントです
フォントを指定するためのキーと
iTextのcom.lowagie.text.pdf.BaseFontオブジェクトの組を格納します
キーが見つからなければ、GaijiFontが利用されます。
ReplaceBackslashToYen バックスラッシュ文字を円マーク文字に変換するかを指定します
デフォルト値はFalseです
ShrinkFontSizeMin [shrink_to_fit(縮小して全体を表示)]にチェックが入っている要素での、
フォントサイズの最小値を設定します
デフォルト値は4.0です
ShrinkFontSizeStep [shrink_to_fit(縮小して全体を表示)]にチェックが入っている要素での、
フォントサイズを縮小していく刻みを設定します
デフォルト値は0.5です
UnderlineWidthCoefficient [text(テキスト)]、[field(フィールド)]要素で描画される文字列の
下線の太さを制御するための係数を設定します
デフォルト値は1.0です

デフォルトのFontMapとDefaultFontは、以下のように定義されています。

  ' .NET (VisualBasic)
  DefaultFont = BaseFont.CreateFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED)
  FontMap.Add("gothic", setting.DefaultFont)
  FontMap.Add("mincho", BaseFont.CreateFont("HeiseiMin-W3", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED))
  GaijiFont = Nothing
  // Java
  defaultFont = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED);
  fontMap.put("gothic", setting.defaultFont);
  fontMap.put("mincho", BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED));
  gaijiFont = null;

例えば以下のように書くことで、任意のフォントを利用できます。 (ここではgothicの定義を上書きする例を示しますが、新しいキーを登録することもできます)

  // C#
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.FontMap["gothic"] = BaseFont.CreateFont([フォント指定], BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  PdfRenderer renderer = new PdfRenderer(stream, setting);
  ' VisualBasic
  Dim setting As PdfRendererSetting = New PdfRendererSetting()
  FontMap("gothic") = BaseFont.CreateFont([フォント指定], BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
  Dim renderer PdfRenderer = New PdfRenderer(stream, setting)
  // Java
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.fontMap.put("gothic", BaseFont.createFont([フォント指定], BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  PdfRenderer renderer = new PdfRenderer(stream, setting);

BaseFont.CreateFontメソッドの詳細については、iTextまたはiTextSharpのドキュメントを参照してください。

ASP.NETでの注意点

ASP.NETでPDFレンダラを利用する場合には、 Global.asaxのApplication_Startメソッドに以下の内容を書いておく必要があります。

  // C#
  void Application_Start(object sender, EventArgs e)
  {
    iTextSharp.text.pdf.BaseFont.AddToResourceSearch(Server.MapPath("bin\\iTextAsian.dll"));
  }
  ' VisualBasic
  Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    iTextSharp.text.pdf.BaseFont.AddToResourceSearch(Server.MapPath("bin\iTextAsian.dll"))
  End Sub

外字について

Windowsにおいて外字のフォントは、 すべてのフォントにリンクされたものと、特定のフォントにリンクされたものの2種類が存在します。 外字領域(UnicodeでのU+E000からU+F8FF)に含まれる文字を表示しようとした場合、 まず、現在のフォントにリンクされた外字フォントにその文字が含まれていればそれが利用され、 含まれていなければ、すべてのフォントにリンクされた外字フォントが利用されます。

これらの外字フォントを基にiTextのBaseFontオブジェクトを生成し、 PdfRendererSettingのGaijiFontおよびGaijiFontMapメンバへとそれぞれ設定することで、 PDF生成時に外字を利用することが可能になります。

外字フォントファイルの場所 設定先
すべてのフォント
にリンクされた
外字フォント
%WINDIR%\\fonts\\EUDC.TTE
GaijiFont
特定のフォント
にリンクされた
外字フォント
外字作成時にユーザが任意に指定
※ レジストリの
HKEY_CURRENT_USER/EUDC/932
からファイル名を取得可能
GaijiFontMap
※ 対応するフォントのキーと共に設定

外字フォントファイルは[TTE]という拡張子で作成されますが、 BaseFontへの読み込みを行う際は[TTF]という拡張子に変更してコピーを作成しておく必要があります。 なお、手動でEUDC.TTEファイルのコピーを行う際、エクスプローラではfontsディレクトリを直接操作することはできないので、 以下のようにコマンドプロンプトから実行してください。

  # xxは任意のフォルダ
  > copy %WINDIR%\\fonts\\EUDC.TTE xx\\EUDC.TTF

GaijiFontおよびGaijiFontMapへの設定を行うサンプルコードを以下に示します。 ここでは、すべてのフォントにリンクされた外字フォントのコピーとして xx\EUDC.TTF ファイルが存在し、 gothicキーに対応するフォントにリンクされた外字フォントのコピーとして xx\GAIJI_GOTHIC.TTF ファイルが存在するものとします。

  // C#
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.GaijiFont = BaseFont.CreateFont("xx\\EUDC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  setting.GaijiFontMap.Add("gothic", BaseFont.CreateFont("xx\\GAIJI_GOTHIC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  ' VisualBasic
  Dim setting As PdfRendererSetting = New PdfRendererSetting()
  setting.GaijiFont = BaseFont.CreateFont("xx\\EUDC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
  setting.GaijiFontMap.Add("gothic", BaseFont.CreateFont("xx\\GAIJI_GOTHIC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED))
  // Java
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.gaijiFont = BaseFont.createFont("xx\\EUDC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  setting.gaijiFontMap.put("gothic", BaseFont.createFont("xx\\GAIJI_GOTHIC.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));

Windowsの外字設定を取得して、自動的に設定を行うサンプルコード

Windowsの外字設定の内容はレジストリから取得することができます。 これを利用して、GaijiFontおよびGaijiFontMapへの設定を自動で行うサンプルコードを以下に示します。

先に説明したとおり、外字を利用するには外字フォントファイルをコピーする必要があります。 そのため、このサンプルコードを利用するには、コピーしたファイルを置いておくための作業用フォルダを事前に作成しておいて下さい。

このサンプルでは、GaijiUtil.SetUpGaijiメソッドを呼ぶことで外字フォントのコピーと設定が行われるようになっています。 SetUpGaijiの引数には、設定を行うPdfSettingオブジェクトと、 RapidReport上でのフォントのキーとWindows上での外字がリンクされたフォント名との対応を表すディクショナリを渡します。 (コードが長いので折りたたみ表示とします)

▼C#のコードを開く

▼VisualBasicのコードを開く

Excel(XLS)レンダラの仕様

Excel(XLS)形式で帳票を出力するには、XlsRendererオブジェクトを利用します。 そのコンストラクタは、以下の形式になっています。

  // C#
  XlsRenderer renderer = new XlsRenderer(workbook);
  XlsRenderer renderer = new XlsRenderer(workbook, setting);
  ' VisualBasic
  Dim renderer As New XlsRenderer(workbook)
  Dim renderer As New XlsRenderer(workbook, setting)
  // Java
  XlsRenderer renderer = new XlsRenderer(workbook);
  XlsRenderer renderer = new XlsRenderer(workbook, setting);

1つ目の引数には、(N)POIのHSSFWorkbookオブジェクトを渡します。

2つ目の引数には、XlsRendererSettingオブジェクトを渡します。 XlsRendererSettingは、XLS出力に関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。

XlsRendererSettingオブジェクトは以下の設定項目をメンバとして持っています。

項目 説明
ElementRendererMap
DummyElementRenderer
利用される要素レンダラのハッシュです
キーが見つからない場合、DummyElementRendererが利用されます
FontMap
DefaultFont
利用されるフォントのハッシュです
フォントを指定するためのキーと、物理フォント名の組を指定します
キーが見つからなければ、DefaultFontが利用されます
CustomPalette XLSが持つパレットの内容を書き換えるかを指定します
Trueにすると、デザイン時に指定した色が正確に出力されますが、
デフォルトのパレットの内容は書き換えられます
Falseにすると、デフォルトのパレットから近い色が選択されて出力されます
デフォルト値はFalseです
ColWidthMax
RowHeightMax
生成されるセルの幅と高さの最大値を指定します
デフォルト値はColWidthMaxが800
RowHeightMaxが350です
VResolution
HResolution
印刷時の垂直/水平方向の解像度を指定します
デフォルト値はどちらも600です
ColWidthCoefficent
RowHeightCoefficent
セルを生成する際の幅と高さにかかる係数を指定します
デフォルト値はどちらも1です

デフォルトのFontMapとDefaultFontは、以下のように定義されています。

  ' .NET (VisualBasic)
  DefaultFont = "MS ゴシック"
  FontMap.Add("gothic", "MS ゴシック")
  FontMap.Add("mincho", "MS 明朝")
  // Java
  defaultFont = "MS ゴシック";
  fontMap.put("gothic", "MS ゴシック");
  fontMap.put("mincho", "MS 明朝");

XlsRendererで帳票出力を行う際は、 Renderメソッドを呼ぶ前に必ずNewSheetメソッドを呼んでワークシートを作成する必要があります。

  // C#
  xlsRenderer.NewSheet("sheet_name");
  reportPages.Render(xlsRenderer);
  ' VisualBasic
  xlsRenderer.NewSheet("sheet_name")
  reportPages.Render(xlsRenderer)
  // Java
  xlsRenderer.newSheet("sheet_name");
  reportPages.render(xlsRenderer);

Excel(XLSX)レンダラの仕様

XLSX形式での出力を行うには、XlsxRendererオブジェクトを利用します。 そのコンストラクタは、以下の形式になっています。

  XlsxRenderer renderer = new XlsxRenderer(workbook);
  XlsxRenderer renderer = new XlsxRenderer(workbook, setting);

1つ目の引数には、POIのXSSFWorkbookオブジェクトを渡します。

2つ目の引数には、XlsxRendererSettingオブジェクトを渡します。 XlsxRendererSettingは、XLSX出力に関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。

XlsxRendererSettingオブジェクトは以下の設定項目をメンバとして持っています。

項目 説明
ElementRendererMap
DummyElementRenderer
利用される要素レンダラのハッシュです
キーが見つからない場合、DummyElementRendererが利用されます
FontMap
DefaultFont
利用されるフォントのハッシュです
フォントを指定するためのキーと、物理フォント名の組を指定します
キーが見つからなければ、DefaultFontが利用されます
ColWidthMax
RowHeightMax
生成されるセルの幅と高さの最大値を指定します
デフォルト値はColWidthMaxが800
RowHeightMaxが350です
VResolution
HResolution
印刷時の垂直/水平方向の解像度を指定します
デフォルト値はどちらも600です
ColWidthCoefficent
RowHeightCoefficent
セルを生成する際の幅と高さにかかる係数を指定します
デフォルト値はどちらも1です

デフォルトのfontMapとdefaultFontは、以下のように定義されています。

  defaultFont = "MS ゴシック";
  fontMap.put("gothic", "MS ゴシック");
  fontMap.put("mincho", "MS 明朝");

XlsxRendererで帳票出力を行う際は、 Renderメソッドを呼ぶ前に必ずnewSheetメソッドを呼んでワークシートを作成する必要があります。

  xlsxRenderer.newSheet("sheet_name");
  reportPages.render(xlsxRenderer);

直接印刷・プレビューの仕様

.NET版で直接印刷・プレビューを行うには、 PrinterオブジェクトとFmPrintPreviewオブジェクト(フォーム)を利用します。

Printerオブジェクトのコンストラクタは、以下の形式になっています。

  // C#
  Printer printer = new Printer(pages);
  Printer printer = new Printer(pages, setting);
  ' VisualBasic
  Dim printer As New Printer(pages);
  Dim printer As New Printer(pages, setting);

1つ目の引数には、ReportPagesオブジェクトを渡します。

2つ目の引数には、GdiRendererSettingオブジェクトを渡します。 GdiRendererSettingは、直接印刷とプレビューに関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。

項目 説明
ElementRendererMap
DummyElementRenderer
利用される要素レンダラのハッシュです
キーが見つからない場合、DummyElementRendererが利用されます
FontMap
DefaultFont
利用されるフォントのハッシュです
フォントを指定するためのキーと、物理フォント名の組を指定します
キーが見つからなければ、DefaultFontが利用されます
ShrinkFontSizeMin [shrink_to_fit(縮小して全体を表示)]にチェックが入っている要素での、 フォントサイズの最小値を設定します
デフォルト値は4.0です
ShrinkFontSizeStep [shrink_to_fit(縮小して全体を表示)]にチェックが入っている要素での、
フォントサイズを縮小する単位を設定します
デフォルト値は0.5です

Printerオブジェクト自体にも、以下の項目が定義されています。

項目 説明
DynamicPageSetting 用紙設定をページ毎に動的に行うかを指定します
Trueにすることで、異なる用紙設定を持ったページを1度の印刷で出力できます
ただし、ユーザがPrintDialogで設定した内容は無効になります
デフォルト値はFalseです
PrintedPages 実際に印刷されたページのインデックスが格納されます
印刷処理後に参照して利用します
PreviewBackgroundImage プレビュー時に表示される背景画像を指定します
この画像はプレビュー時にのみ表示され、印刷実行時には表示されません。
PreviewBackgroundSetting PreviewBackGroundImageに指定された画像を描画する際の設定を行います
以下の設定項目を持ちます
項目説明
Alpha 画像の透明度を指定します
デフォルト値は1(不透明)です
X, Y 画像の描画位置を指定します
デフォルト値は(0, 0)です
Scale 画像を描画するサイズの倍率を指定します
デフォルト値は1(ページ全体のサイズ)です

直接印刷を行うコードは以下のようになります。

  // C#

  // ダイアログを出して印刷
  if (printer.PrintDialog.ShowDialog == DialogResult.OK)
  {
      printer.PrintDocument.Print();
  }

  // ダイアログを出さずに印刷
  printer.PrintDocument.Print();
  ' VisualBasic

  ' ダイアログを出して印刷
  If printer.PrintDialog.ShowDialog = DialogResult.OK Then
    printer.PrintDocument.Print()
  End If

  ' ダイアログを出さずに印刷
  printer.PrintDocument.Print()

FmPrintPreviewというフォームを利用することで、プレビュー表示ができます。 FmPrintPreviewのコンストラクタには、Printerオブジェクトを渡します。

FmPrintPreviewは、以下のメンバを持ちます。

項目 説明
StartUpZoomFit プレビュー画面が開かれた時点で
表示倍率をウィンドウサイズに合わせるかを指定します
デフォルト値はFalseです
StartUpZoomFitWidth プレビュー画面が開かれた時点で
表示倍率をウィンドウサイズの幅に合わせるかを指定します
デフォルト値はFalseです
SearchEnabled テキスト検索機能を有効にするかを指定します
デフォルト値はTrueです
PrintExecuted プレビュー画面から印刷が実行されたかを得ることができます
プレビュー表示が終了してから参照して利用します

プレビュー表示を行うコードは以下のようになります。

  // C#
  FmPrintPreview preview = new FmPrintPreview(printer);
  preview.ShowDialog();
  ' VisualBasic
  Dim preview As New FmPrintPreview(printer)
  preview.ShowDialog()

プレビュー画面の機能

プレビュー画面を構成するいくつかのコントロールについての説明を行います。

この項の内容は、独自のプレビュー画面を作成する場合などに有用です。 「プレビュー画面のカスタマイズ」にサンプルの説明があります。

FmPrintPreview内では、以下のコントロールが利用されています。

  • PrintPreview : プレビュー表示
  • PrintPreviewPage : ページ移動操作
  • PrintPreviewZoom : 拡大・縮小操作
  • PrintPreviewSearch : 検索パネルON/OFFボタン
  • PrintPreviewSearchPanel : 検索パネル

PrintPreviewには以下のプロパティ/メソッドが用意されています。

プロパティ/メソッド 説明
PageCount 現在表示中のページ数を設定/取得するプロパティです
最初のページは1になります
Zoom 拡大・縮小の倍率を設定/取得するプロパティです
設定可能な値の範囲は 0.3 (30%) ~ 3.0 (300%) です
ZoomIn() 拡大・縮小の倍率を1段階上げるメソッドです
0.3 (30%), 0.4 (40%), 0.5 (50%), 0.6 (60%),
0.7 (70%), 0.8 (80%), 0.9 (90%), 1.0 (100%),
1.25 (125%), 1.5 (150%), 1.75 (175%), 2.0 (200%), 2.5 (250%), 3.0 (300%)
という刻みで上がります
ZoomOut() 拡大・縮小の倍率を1段階下げるメソッドです
0.3 (30%), 0.4 (40%), 0.5 (50%), 0.6 (60%),
0.7 (70%), 0.8 (80%), 0.9 (90%), 1.0 (100%),
1.25 (125%), 1.5 (150%), 1.75 (175%), 2.0 (200%), 2.5 (250%), 3.0 (300%)
という刻みで下がります
ZoomFit() 画面サイズに合わせて拡大・縮小の倍率を設定するメソッドです
ZoomFitWidth() 画面幅に合わせて拡大・縮小の倍率を設定するメソッドです

PrintPreviewZoomには、以下のプロパティが用意されています。

プロパティ 説明
AutoFit 「画面サイズに合わせて拡大・縮小」状態かを設定・取得します
Trueを代入すると、画面サイズが変更されるたびに
拡大・縮小の倍率が画面サイズに合わせて自動的に設定されるようになります
AutoFitWidth 「画面幅に合わせて拡大・縮小」状態にします
Trueを代入すると、画面サイズが変更されるたびに
拡大・縮小の倍率が画面幅に合わせて自動的に設定されるようになります

PrintPreviewSearchには以下のメソッドが用意されています。

メソッド 説明
PanelShow() 検索パネルを表示します
PanelHide() 検索パネルを非表示にします

イメージの出力

PrinterオブジェクトのGetImageメソッドを用いると、 帳票のイメージをSystem.Drawing.Imageオブジェクトとして得ることができます。 引数としてページ番号を渡します。

  // C#
  Image image = printer.GetImage(0);
  ' VisualBasic
  Dim image As Image = printer.GetImage(0)

追加の引数として、x,y方向それぞれのスケールを指定することもできます。 これにより、任意の解像度の画像を得ることができます。

  // C#

  // 2倍の解像度の画像を得る
  Image image = printer.GetImage(0, 2, 2);
  ' VisualBasic

  ' 2倍の解像度の画像を得る
  Dim image As Image = printer.GetImage(0, 2, 2)

Graphicsオブジェクトを渡して描画を行うRenderというメソッドも用意されています。2番目の引数にはページ番号を渡します。 これを利用することで、例えば任意のコントロール上に帳票のイメージを描画するといったことが可能となります。

  // C#
  Graphics g = ...
  printer.Render(g, 0);
  ' VisualBasic
  Dim g As Graphics = ...
  printer.Render(g, 0)

GetPixelSizeメソッドによって、帳票イメージのピクセル単位でのサイズを得ることができます。 引数としてページ番号を渡します。 例としてBitmapオブジェクトを生成して描画を行うコードを以下に示します。

  // C#
  Size size = printer.GetPixelSize(0);
  Bitmap bmp = new Bitmap(size.Width, size.Height);
  Graphics g = Graphics.FromImage(bmp);
  printer.Render(g, 0);
  ' VisualBasic
  Dim size As Size = printer.GetPixelSize(0)
  Dim bmp As New Bitmap(size.Width, size.Height)
  Dim g As Graphics = Graphics.FromImage(bmp)
  printer.Render(g, 0)

イメージローダ

PdfRenderer,XlsRenderer,Printerオブジェクトには、ImageLoaderMapというメンバがあります。 これは[画像]要素に対して動的な画像を与えるために用意された、 イメージローダというオブジェクトを管理するためのハッシュです。

それぞれのレンダラに対して、イメージローダのインターフェース(と、その標準実装クラス)が、 以下のように用意されています。

レンダラ イメージローダの
インターフェース/標準実装クラス
PdfRenderer IPdfImageLoader
PdfImageLoader
XlsRenderer IXlsImageLoader
XlsImageLoader
XlsxRenderer IXlsxImageLoader
XlsxImageLoader
Printer IGdiImageLoader
GdiImageLoader

[画像]要素は、[キー]プロパティ値を用いてImageLoaderMapからイメージローダを取得します。 さらに、[式]プロパティを評価した結果の値をパラメータとしてイメージローダから画像を得ます。

先ほど示したイメージローダの各標準実装クラスを利用するには、まずImageMapというオブジェクトを生成します。 ImageMapはハッシュを拡張したオブジェクトで、画像を任意のキーと共に登録しておくことができます。

  // C#
  ImageMap imageMap = new ImageMap();
  imageMap.Add("image1", new Bitmap("image1.png"));
  imageMap.Add("image2", new Bitmap("image2.png"));
  imageMap.Add("image3", new Bitmap("image3.png")) ;
  ' VisualBasic
  Dim imageMap As New ImageMap
  imageMap.Add("image1", New Bitmap("image1.png"))
  imageMap.Add("image2", New Bitmap("image2.png"))
  imageMap.Add("image3", New Bitmap("image3.png"))
  // Java
  ImageMap imageMap = new ImageMap();
  imageMap.put("image1", ImageIO.read(new File("image1.png")));
  imageMap.put("image2", ImageIO.read(new File("image2.png")));
  imageMap.put("image3", ImageIO.read(new File("image3.png")));

ImageMapクラスは、jp.co.systembase.report.renderer名前空間(パッケージ)に定義されており、 特定のレンダラに依存していません。 イメージローダの各標準実装クラスのコンストラクタはImageMapを受け取るようになっており、 与えられたパラメータをキーとしてここから画像を取得して返します。

  // C#
  PdfImageLoader pdfImageLoader = new PdfImageLoader(imageMap);
  XlsImageLoader xlsImageLoader = new XlsImageLoader(imageMap);
  XlsImageLoader xlsxImageLoader = new XlsxImageLoader(imageMap);
  GdiImageLoader gdiImageLoader = new GdiImageLoader(imageMap);
  ' VisualBasic
  Dim pdfImageLoader As New PdfImageLoader(imageMap)
  Dim xlsImageLoader As New XlsImageLoader(imageMap)
  Dim xlsxImageLoader As New XlsxImageLoader(imageMap)
  Dim gdiImageLoader As New GdiImageLoader(imageMap)
  // Java
  PdfImageLoader pdfImageLoader = new PdfImageLoader(imageMap);
  XlsImageLoader xlsImageLoader = new XlsImageLoader(imageMap);
  XlsxImageLoader xlsxImageLoader = new XlsxImageLoader(imageMap);

イメージローダが生成できたら、ImageLoaderMapに登録することで利用可能になります。

  // C#
  pdfRenderer.ImageLoaderMap.Add("key", pdfImageLoader);
  xlsRenderer.ImageLoaderMap.Add("key", xlsImageLoader);
  xlsxRenderer.ImageLoaderMap.Add("key", xlsxImageLoader);
  printer.ImageLoaderMap.Add("key", gdiImageLoader);
  ' VisualBasic
  pdfRenderer.ImageLoaderMap.Add("key", pdfImageLoader)
  xlsRenderer.ImageLoaderMap.Add("key", xlsImageLoader)
  xlsxRenderer.ImageLoaderMap.Add("key", xlsxImageLoader)
  printer.ImageLoaderMap.Add("key", gdiImageLoader)
  // Java
  pdfRenderer.imageLoaderMap.put("key", pdfImageLoader);
  xlsRenderer.imageLoaderMap.put("key", xlsImageLoader);
  xlsxRenderer.imageLoaderMap.put("key", xlsxImageLoader);

インターフェースを実装することでイメージローダを自作することもできます。 例えば標準では対応していないバーコードやグラフなどを表示するには、 独自のイメージローダを作成します。

いずれのインターフェースも、実装する必要があるのはGetImageという1つのメソッドのみです。 例えば、IPdfImageLoaderの定義は以下のようになっています。

  ' .NET (VisualBasic)
  Public Interface IPdfImageLoader
      Function GetImage(ByVal param As Object) As iTextSharp.text.Image
  End Interface
  // Java
  public interface IPdfImageLoader {
      com.lowagie.text.Image getImage(Object param);
  }

機能サンプルの「動的画像(グラフ)の表示」に、 イメージローダを利用したサンプルの説明があります。

Google App Engine利用時の注意点

Google App Engineを利用している場合はBufferedImageオブジェクトを生成することができないために、 ImageMapクラスを利用することができません。

代わりに、iTextの提供するcom.lowagie.text.Imageオブジェクトを格納可能なPdfImageMapを利用してください。 PdfImageMapオブジェクトは、ImageMapと同様にPdfImageLoaderのコンストラクタへ渡すことができます。

  PdfImageMap imageMap = new PdfImageMap();
  imageMap.put("image1", Image.getInstance("...\image1.png"));
  imageMap.put("image2", Image.getInstance("...\image2.png"));
  imageMap.put("image3", Image.getInstance("...\image3.png"));

  PdfImageLoader pdfImageLoader = new PdfImageLoader(imageMap);