.NET TIPS [ASP.NET]あらかじめ用意したPDF文書をインポートするには?山田 祥寛2005/06/24 |
|
|
「TIPS:[ASP.NET]Webフォームから動的にPDF文書を作成するには?」や「TIPS:[ASP.NET]PDF文書のセキュリティ情報やヘッダ/フッタを設定するには?」では、iText.NETライブラリを利用して、WebフォームからPDF文書を生成する方法を紹介した。
しかし、PDF文書を動的に生成するといっても、定型的なデザインを一から動的に生成する必要はない。そのようなことをすれば、コードが無駄に冗長になり、サーバに対する負荷を増やしてしまう一因ともなる。また、帳票レイアウトに変更が生じた場合に、コードを直接修正しなければならないのもうれしいことではないだろう。
そこで、一般的には定型的な枠組みの部分は「テンプレート」としてあらかじめ用意しておき、動的にデータベースなどから取得するべきデータ部分だけをASP.NETから操作するのが好ましい。
本稿では、あらかじめ用意したテンプレートPDF「template.pdf」に対してデータを動的に追記する方法について紹介しよう。なお、本稿ではあらかじめ以下のようなPDF文書を用意し、サーバ上に配置しておくものとする。
あらかじめ用意しておくPDFテンプレート(template.pdf) |
それではさっそく、具体的なサンプル・コードを眺めてみることにしよう。なお、本稿のサンプルを実行するには、「TIPS:[ASP.NET]Webフォームから動的にPDF文書を作成するには?」の手順に従って、iText.NETの展開とweb.configの設定を行っておく必要がある。
|
|
テンプレートPDFを基にPDF文書を生成するWebフォーム(C#版:pdf_template_cs.aspx) |
|
|
テンプレートPDFを基にPDF文書を生成するWebフォーム(VB.NET版:pdf_template_vb.aspx) |
ここで注目していただきたいのは、ソースコード中、太字で示した部分だ。テンプレートを利用するには、PdfReaderクラス(com.lowagie.text.pdf名前空間)でまず、あらかじめ用意したテンプレートPDFを読み込む必要がある。読み込んだテンプレートは、PdfWriterオブジェクト(com.lowagie.text.pdf名前空間)のgetImportedPageメソッドからページ数を指定してインポートすることが可能だ。
|
||
PdfWriter.getImportedPageメソッドのシグネチャ(上:C#、下:VB.NET) | ||
このメソッドでは、第1パラメータにPdfReaderオブジェクトを、第2パラメータにページ数を渡すことができる。戻り値として、インポートされたページを表現するPdfImportedPageオブジェクト(com.lowagie.text.pdf名前空間)を返す。 |
インポートしたページを現在のページに追加するには、PdfContentByteオブジェクト(com.lowagie.text.pdf名前空間)のaddTemplateメソッドを使用すればよい。
|
||
PdfContentByte.addTemplateメソッドのシグネチャ(上:C#、下:VB.NET) | ||
このメソッドでは、第1パラメータにPdfTemplateオブジェクト(com.lowagie.text.pdf名前空間)を、第2パラメータにx座標、第3パラメータにy座標を渡すことができる。 |
以上を理解したら、実際にサンプルを動かしてみよう。以下の画面のように、テンプレートtemplate.pdfに対して、文字列が追記されていれば成功だ。
pdf_template_cs.aspx/pdf_template_vb.aspxの実行結果 |
ちなみに、本サンプルではインポートしたテンプレートをそのまま貼り付けているが、貼り付け前に(先ほど示したaddTemplateメソッドの別バージョンのメソッドを利用することで)縮小/拡大処理を施すことも可能だ。
カテゴリ:Webフォーム 処理対象:PDF 使用ライブラリ:PdfWriterクラス(com.lowagie.text.pdf名前空間) 使用ライブラリ:PdfReaderクラス(com.lowagie.text.pdf名前空間) 使用ライブラリ:PdfContentByteクラス(com.lowagie.text.pdf名前空間) 使用ライブラリ:PdfTemplateクラス(com.lowagie.text.pdf名前空間) 関連TIPS:[ASP.NET]Webフォームから動的にPDF文書を作成するには? 関連TIPS:[ASP.NET]PDF文書のセキュリティ情報やヘッダ/フッタを設定するには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|