3.5 サンプルプログラム(2-2) - DBから取得したデータをデータソースとしてPDFを生成
概要
サンプルプログラム(2-2)ではDBデータソースからデータを取得してPDFを生成します。
DB接続の設定
本サンプルではMySQLを使用しています。実行するためにはMySQLのJDBCドライバをクラスパスに設定する必要があります。
またドキュメントレイアウトにDBへの接続情報を設定しますが、お客様環境に合わせて「リソース定義」のDB接続時のユーザID・パスワードを設定してください。
SQLの設定
ドキュメントレイアウトにSQLを設定しますが、
アプリケーションからSQLを動的に変更することが可能です。
以下では「GNPが550,000より多い」データを取得するようにsetDataSourceParameterメソッドにて可変パラメータを設定しています。プログラムで値を設定しなかった場合のデフォルト値は、ドキュメントレイアウトで設定している「150,000」となります。
サンプル構成
| 項目 | ファイルパス |
|---|---|
| ドキュメントレイアウトサンプル |
<biz-Stream_home>/sample/java/Sample2_db-doc.xml
|
| ページレイアウトサンプル |
<biz-Stream_home>/sample/java/Sample2-page.xml
|
| ソースサンプル |
<biz-Stream_home>/sample/java/Sample2_db.java
|
| 出力結果サンプル |
<biz-Stream_home>/sample/java/Sample2_db.pdf
|
ソースサンプル
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Hashtable;
import com.brainsellers.pdf.PDFRuntimeException;
import com.brainsellers.xml.JaxpXML;
import com.brainsellers.xml.common.XMLSuper;
public class Sample2_db {
public static void main(String args[]) {
new Sample2_db(args);
System.exit(0);
}
public Sample2_db(String args[]) {
try {
Hashtable<String, String> param1 = new Hashtable<String, String>();
param1.put("param1", "550000");
// (1) 入出力共にファイル名で指定する
XMLSuper xml = new JaxpXML(
"${base-dir}/sample/java/Sample2_db-doc.xml",
"${base-dir}/sample/java/Sample2_db.pdf");
// (2) レイアウト情報(XML)の解析を行う
xml.parse();
// (3) 用紙サイズ、セキュリティ等の文書情報はドキュメントレイアウトで定義するので
// アプリケーションでは設定しません。改ページ処理も必要ありません。
// (4) SQLの可変パラメータを変更する
xml.setDataSourceParameter("sql-statement", param1);
// (5) 座標計算を行う
xml.calcDataSize();
// (6) ドキュメントレイアウトで指定されているデータソースを使用してデータをマージし
// PDFを生成する。
xml.toPDF();
// (7) PDFを出力する
xml.close();
} catch (PDFRuntimeException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
出力結果
