メニュー最初の一歩基本的な仕組み機能サンプル
プログラム仕様デザイン仕様機能拡張その他関連製品開発・運営会社 |
レンダラの仕様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オブジェクトは以下の設定項目をメンバとして持っています。
フォントについてデフォルトのFontMapとDefaultFontは、以下のように定義されています。
' .NET (VisualBasicで実装)
DefaultFont = BaseFont.CreateFont("MS-Gothic", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED)
FontMap.Add("gothic", setting.DefaultFont)
FontMap.Add("mincho", BaseFont.CreateFont("MS-Mincho", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED))
GaijiFont = Nothing
// Java
defaultFont = BaseFont.createFont("MS-Gothic", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED);
fontMap.put("gothic", setting.defaultFont);
fontMap.put("mincho", BaseFont.createFont("MS-Mincho", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED));
gaijiFont = null;
任意のフォントを利用するには、以下のようにBaseFontオブジェクトを生成してFontMapに設定します。 (ここでは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 As 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のドキュメントを参照してください。 デフォルトのフォントをバージョン4系のままとする(MSゴシック/明朝を利用しない)
バージョン4系のデフォルト設定では、MS-Gothic/MS-Michoではなく、HeiseiKakuGo-W5/HeiseiMin-W3という論理フォントが設定されていました。
5.0以降でもこの設定を利用する場合は、クラス変数 useMsFont にFalseを設定してください。これによって、以下の設定が行われるようになります。
' .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;
※このフォントを利用した場合、AdobeAcrobatReaderでは 小塚ゴシック/小塚明朝 というプロポーショナルフォントが採用されます。 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生成時に外字を利用することが可能になります。
外字フォントファイルは[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上での外字がリンクされたフォント名との対応を表すディクショナリを渡します。 (コードが長いので折りたたみ表示とします) .NET Framework利用時のFIPS準拠違反エラーへの対応方法Windowsの「ローカルセキュリティポリシー」で、 「ローカルポリシー」「セキュリティオプション」の「システム暗号化:暗号化、ハッシュ、署名のためのFIPS準拠アルゴリズムを使う」 を有効とした場合、.NET Framework版のRapidReportでPDF出力を行うとInvalidOperationException例外が発生します。 (.NET5以降/.NET Core版、Java版では発生しません) この問題を回避するには、以下のコードを実行します。
// C#
iTextSharp.text.pdf.PdfWriter.SkipIdGenerate = true;
' VisualBasic
iTextSharp.text.pdf.PdfWriter.SkipIdGenerate = True
SkipIdGenerateはクラス変数なので、プロセス内で1度だけ設定すれば、 その後の全てのPDF出力処理で、先述のエラーの発生を回避できます。 SkipIdGenerateをtrueにすると、PDFの内部項目であるID値が出力されなくなります。 (ID値の出力にはFIPS非準拠であるMD5アルゴリズムが利用されているため、 ID値の出力をスキップすることでエラーが回避されます) ID値はPDFの仕様上では省略可能な項目なので、 単にPDFを閲覧/印刷する場合にはID値がなくとも特に問題はありません。 ただし、他のPDFなどからRapidReportで生成したPDFを参照するといった使い方をされる場合、 ID値の有無が動作に影響する可能性はあるので、 状況に応じてこのオプションを利用するかをご判断ください。 ※ PDFにパスワードを設定する場合は、この方法でのエラー回避は行えません。「FIPS準拠アルゴリズムを使う」を無効としてご利用ください。 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オブジェクトは以下の設定項目をメンバとして持っています。
デフォルトの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);
他の出力方法として、XlsRendererにはRenderSheetメソッドが用意されており、これを利用することでページ区切の含まれないExcelシートを生成することが可能です。 Excel(XLSX)レンダラの仕様XLSX形式での出力を行うには、XlsxRendererオブジェクトを利用します。 そのコンストラクタは、以下の形式になっています。 XlsxRenderer renderer = new XlsxRenderer(workbook); XlsxRenderer renderer = new XlsxRenderer(workbook, setting); 1つ目の引数には、POIのXSSFWorkbookオブジェクトを渡します。 2つ目の引数には、XlsxRendererSettingオブジェクトを渡します。 XlsxRendererSettingは、XLSX出力に関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。 XlsxRendererSettingオブジェクトは以下の設定項目をメンバとして持っています。
デフォルトの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 明朝");
XlsxRendererで帳票出力を行う際は、 Renderメソッドを呼ぶ前に必ずNewSheetメソッドを呼んでワークシートを作成する必要があります。
// C#
xlsxRenderer.NewSheet("sheet_name");
reportPages.Render(xlsxRenderer);
' VisualBasic
xlsxRenderer.NewSheet("sheet_name")
reportPages.Render(xlsxRenderer)
// Java
xlsxRenderer.newSheet("sheet_name");
reportPages.render(xlsxRenderer);
他の出力方法として、XlsxRendererにはRenderSheetメソッドが用意されており、これを利用することでページ区切の含まれないExcelシートを生成することが可能です。 ExcelレンダラのRenderSheetメソッドXls(x)Rendererを利用して通常の方法(ReportPages.Renderメソッド)によって帳票出力を行うと、 見出しと明細行を含む一般的な帳票の場合、以下のような内容のExcelファイルが出力されます。 この方法で出力されるExcelファイルには、紙への印刷を行った場合にデザイン通りの内容で出力されることを目的としているため、 ページの区切りや、その度ごとに見出しやフッター行などが必要に応じて挿入されます。 しかし、このファイルを他の何らかのプログラムに対するデータソースとして利用する場合などは、この形式だと不都合も多いでしょう。 こうした場合は、Xls(x)Rendererクラスに用意されているRenderSheetメソッドを利用することで、 以下のようなページ区切りを含まないシートを出力できます。
RenderSheetメソッドを呼ぶ際は、引数としてReportオブジェクト(ReportPagesではなく)を渡します。 // C# Report report = new Report(Json.Read("example.rrpt")); report.Fill(new ReportDataSource(dataTable)); using (FileStream fs = new FileStream("output.xlsx", FileMode.Create)) { XSSFWorkbook workbook = new XSSFWorkbook(); XlsxRenderer renderer = new XlsxRenderer(workbook); renderer.NewSheet("sheet_name"); renderer.RenderSheet(report); workbook.Write(fs); } ' VisualBasic Dim report As New Report(Json.Read("example.rrpt")) report.Fill(New ReportDataSource(dataTable)) Using fs As New FileStream("output.xlsx", IO.FileMode.Create) Dim workbook As New XSSFWorkbook Dim renderer As New XlsxRenderer(workbook) renderer.NewSheet("sheet_name") renderer.RenderSheet(report) workbook.Write(fs) End Using // Java Report report = new Report(ReadUtil.readJson("example.rrpt")); report.fill(new ReportDataSource(data)); FileOutputStream fos = new FileOutputStream("output.xlsx"); try{ XSSFWorkbook workBook = new XSSFWorkbook(); XlsxRenderer renderer = new XlsxRenderer(workBook); renderer.newSheet("sheet_name"); renderer.renderSheet(report); workBook.write(fos); }finally{ fos.close(); } RenderSheetでの出力に適した帳票レイアウトの生成レポートデザイナのウィザード機能で、「一覧表形式」の「Excelシート向け」を選択することで、 このRenderSheetメソッドでの出力に適した形式の帳票を生成できます。 直接印刷・プレビューの仕様.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は、直接印刷とプレビューに関する設定を行うためのオブジェクトです。 デフォルトの設定のままでよいのであれば、この引数は省略できます。
Printerオブジェクト自体にも、以下の項目が定義されています。
直接印刷を行うコードは以下のようになります。 // 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は、以下のメンバを持ちます。
プレビュー表示を行うコードは以下のようになります。
// C#
FmPrintPreview preview = new FmPrintPreview(printer);
preview.ShowDialog();
' VisualBasic
Dim preview As New FmPrintPreview(printer)
preview.ShowDialog()
プレビュー画面の機能プレビュー画面を構成するいくつかのコントロールについての説明を行います。 この項の内容は、独自のプレビュー画面を作成する場合などに有用です。 「プレビュー画面のカスタマイズ」にサンプルの説明があります。 FmPrintPreview内では、以下のコントロールが利用されています。
PrintPreviewには以下のプロパティ/メソッドが用意されています。
PrintPreviewZoomには、以下のプロパティが用意されています。
PrintPreviewSearchには以下のメソッドが用意されています。
イメージの出力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というメンバがあります。 これは[画像]要素に対して動的な画像を与えるために用意された、 イメージローダというオブジェクトを管理するためのハッシュです。 それぞれのレンダラに対して、イメージローダのインターフェース(と、その標準実装クラス)が、 以下のように用意されています。
[画像]要素は、[キー]プロパティ値を用いてImageLoaderMapからイメージローダを取得します。 さらに、[式]プロパティを評価した結果の値をパラメータとしてイメージローダから画像を得ます。 利用可能な画像の形式はBMP/PNG/JPEG/GIFです。 先ほど示したイメージローダの各標準実装クラスを利用するには、まずImageMapというオブジェクトを生成します。 ImageMapはハッシュを拡張したオブジェクトで、画像を任意のキーと共に登録しておくことができます。 イメージローダに登録する画像データの型を以下に示します。
イメージローダを作成して画像データを登録するサンプルコードを以下に示します。
// C# (.NET5以降/.NET Core)
ImageMap imageMap = new ImageMap();
imageMap.Add("image1", File.ReadAllBytes("image1.png"));
imageMap.Add("image2", File.ReadAllBytes("image2.png"));
imageMap.Add("image3", File.ReadAllBytes("image3.png")) ;
' VisualBasic (.NET5以降/.NET Core)
Dim imageMap As New ImageMap
imageMap.Add("image1", File.ReadAllBytes("image1.png"))
imageMap.Add("image2", File.ReadAllBytes("image2.png"))
imageMap.Add("image3", File.ReadAllBytes("image3.png"))
// C# (.NET Framework)
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 (.NET Framework)
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); |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright (c) 2013, SystemBase Co.,Ltd. All rights reserved. |