...

チュートリアル - 株式会社ワン・オー・ワン

by user

on
Category: Documents
44

views

Report

Comments

Transcript

チュートリアル - 株式会社ワン・オー・ワン
株式会社ワン・オー・ワン
チュートリアル
Version 1.5
Note:
コピー並びに配布厳禁
内容は予告なく変更される場合があります
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
目次
概要 ...................................................................................................................... 1
1. PDF を利用した帳票出力 ............................................................................... 2
1-1. 概要 ..................................................................................................... 2
1-2. PDF ファイルの準備 ........................................................................... 2
1-3. プロジェクトの編集 ............................................................................ 4
1-4. HTML の修正 ...................................................................................... 4
1-5. インタラクティブな PDF の表示 ........................................................ 5
1-6. 動作確認.............................................................................................. 7
1-7. 文字化けの対応 ................................................................................... 8
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
概要
このチュートリアルでは、101NEO Studioの基本的な使い方、機能等について理解された方
を対象としております。
具体的には、チュートリアル 第1部および第2部を実施している方を対象としており、このチ
ュートリアルでは、第2部にPDFを利用した機能を追加します。
1-1-1. システム要件
チュートリアル 第2部をすべて確認するためには次のシステム、設定が必要です。
•
JDBC対応データベース(説明ではOracleを使用)
•
使用するデータベースにあわせた101NEO Studioのクラスパス設定
•
メールサーバー(3章にて使用)
•
Java Mail (mail.jar) と JFA (activation.jar) 及びクラスパス設定
•
WebブラウザでCookieをブロックしない設定(セッション管理で使用)
上記にあわせて、このチュートリアルでは次のシステム(製品)が必要です。
•
Adobe Acrobat (PDFフォームを設定したPDFファイルを作成する場合)
PDFフォーム作成の可能な製品版のAcrobatが必要です。ですのでAcrobat6.0 の場合
は Professionalが必要になります。この文書ではAcrobat5.0を使用しております。
•
インターネットにアクセス可能な環境 (PDFファイルをローカルに持たない場合)
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 1
1. PDFを利用した帳票出力
1-1. 概要
101NEOでは、PDFと連携してインタラクティブな文書を作成することが可能です。
チュートリアル 第2部の「4-4. 注文データ確認アプリケーション」にPDFでの帳票出力を追
加します。
Adobe Acrobatのフォーム機能を使用するとPDF内に入力領域やチェックボックス、ボタンな
どを配置したテンプレートが作成できます。そのテンプレートPDFに101NEOを使って動的に
値を設定する方法を説明します。
この機能を活用することで、データ毎にPDFを作成する必要がなくなり、帳票が必要なシス
テム等では効率良くリソースを使用することが可能になります。
1-2. PDFファイルの準備
帳票用のPDFファイルを準備します。インターネット上のPDFファイルをそのまま利用する場
合には、こちらのステップは必要ありません。
1-2-1. PDFの作成
PDFファイルの作成はいろいろな方法がありますが、ここではAcrobat 5.0を使用してExcelか
らPDFを作成します。
図 1-1. Excelでの帳票作成
上図のような帳票イメージをExcel上で作成し、「Adobe PDFへの変換」ボタン
をクリックします。
「PDFファイルに名前をつけて保存」ダイアログが表示されますので、任意のファイル名にて
保存してください。
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 2
1-2-2. PDFフォームの作成
「1-2-1」で作成したPDFファイルをAcrobatで開きます。
図 1-2. PDFファイル
フォームツールにて下記のようなPDFフォームを作成し、保存します。
図 1-3. PDFフォームの作成
Note:
PDF フォームの作成方法について詳しくは Adobe Acrobat のマニ
ュアル等を参照してください。
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 3
1-3. プロジェクトの編集
1-3-1. 「ContentTextType」プロパティーの設定
プロジェクトの詳細設定ダイアログにて「ContentTextType」プロパティーに
「Application/vnd.fdf」を設定します。
図 1-4. プロジェクトの詳細設定ダイアログ
1-4. HTMLの修正
1-4-1. 注文明細のページ (orderdetail.html)
注文明細の下部にPDFファイルを表示するためのリンク(<A>タグ)を追加します。
<html>
<head>
<title>チュートリアル 第2部</title>
<link rel="stylesheet" type="text/css" href="/tutorial.css">
</head>
<body>
<table cellspacing="0" cellpading="1" align="center" width="50%">
<tr><td class="table_title">注文詳細 [@注文番号]</td></tr>
<tr><td>
<table class="list">
<tr>
<th class="list">明細番号</th>
<th class="list">商品コード</th>
<th class="list">メーカー</th>
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 4
<th class="list">商品名</th>
<th class="list">注文数</th>
<th class="list">金額</th>
</tr>
<!-- %repeat -->
<tr>
<td class="list" align="center">@行番号</td>
<td class="list">@商品コード</td>
<td class="list">@メーカー</td>
<td class="list">@商品名</td>
<td class="list" align="center">@注文数</td>
<td class="list" align="right">¥@金額</td>
</tr>
<!-- %end -->
<tr>
<th class="list" colspan="5">合計金額</th>
<td class="list" align="right">¥@合計金額</td>
</tr>
</table>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<a href="@WEBAPP?nextpage=orderlist.html">注文一覧に戻る</a>
</td></tr>
<tr><td>
<a href="@WEBAPP?nextpage=pdfview.html&id=@注文番号">PDFでの表示</a>
</td></tr>
</table>
</body>
</html>
1-5. インタラクティブなPDFの表示
1-5-1. インタラクティブなPDF表示のHTMLファイル (pdfview.html)
FDF(Form Data Format)データとしてレスポンスするためにメディアタイプ(データタイプ)を指
定します。
101NEOにてレスポンスのメディアタイプを指定するには %content-type を使用します。こ
のコマンドによりMIME形式の content-type が設定されます。
指定しなかった場合には「text/html」としてレスポンスされます。
<!-- %content-type application/vnd.fdf -->
%FDF-1.2
1 0 obj
<<
/FDF << /Fields [
<< /V (@注文日時)/T (orderdate)>>
<!-- %repeat -->
<< /V (@idx)/T (no@idx)>>
<< /V (@商品コード)/T (code@idx)>>
<< /V (@メーカー)/T (maker@idx)>>
<< /V (@商品名)/T (name@idx)>>
<< /V (@注文数)/T (num@idx)>>
<< /V (@金額)/T (price@idx)>>
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 5
<!-- %end -->
]
/Encoding /Shift-JIS /F (http://www.101s.co.jp/pdf/order.pdf)
>>
>>
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF
FDFでは「小計」、「消費税」、「合計金額」を設定していません。今回用意したPDFにて各値
を自動計算するように設定しています。自動計算に詳細はAcrobatのマニュアルを参照して
ください。
FDFでは、/FオプションにてPDFファイルを指定します。例では、弊社サイトのPDFファイルを
テンプレートとして使用するように記述しておりますが、同ファイルをダウンロードしローカル
のPDFファイルを使用することも可能です。
例えば、101NEO Studioでは、HTMLファイルのフォルダにPDFファイルを配置した場合、次
のように指定することでローカルのPDFファイルをテンプレートとして使用するようになりま
す。
/F (http://localhost:8888/order.pdf)
1-5-2. PDF表示用の仕様定義書 (pdfview.spj)
FDFデータで使用される変数を設定します。
内容的にはHTMLデータとしてレスポンスするロジックと同様です。
[reference]
注文日時 = $注文日時
idx = $行番号
商品コード = $商品コード
メーカー = $メーカー
商品名 = $商品名
注文数 = $注文数
金額 = $金額
[init_page]
local(sql, rs)
call ReplaceMarker(sql,
"select 行番号, o.商品コード, 商品名, メーカー, 注文数, 金額
from 注文明細 o, 商品マスター m
where 注文番号 = ?id
and o.商品コード = m.商品コード
order by 行番号"
)
call QuerySQL(rs, oracle, $sql)
local(行番号, 商品コード, 商品名, メーカー, 注文数, 金額)
call SQLResultRowArray(rs, 1, 0,
行番号, 商品コード, 商品名, メーカー, 注文数, 金額)
call ReplaceMarker(sql,
"select to_char(注文時刻, 'yyyy/mm/dd hh24:mi')
from 注文データ where 注文番号 = ?id"
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 6
)
call QuerySQL(rs, oracle, $sql)
local(注文日時)
call SQLResultRow(rs, 1, 注文日時)
1-6. 動作確認
1-6-1. 実行画面
下図のように注文詳細ページに「PDFでの表示」リンクが表示されます。
図 1-5. 注文詳細ページ
「PDFでの表示」リンクをクリックすると下図のようにデータベースから取得した値を各項目
に設定したPDFを動的に表示します。
図 1-6. 動的に作成されたPDF
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 7
1-7. 文字化けの対応
FDFファイルのエンコードを Shift-JIS にした場合、そのまま置き換えてしまうとシフトJIS漢
字コードの2バイト目が '¥' の場合に文字化けを起こします。
これは FDF を使用した場合の PDF の仕様です。
そのため、Unicode でエンコーディングして埋め込むことになります。PDF用の Unicodeエン
コーディング文字列を作成するのが pdf.to_unicode() 関数です。
1-7-1. PDF表示のHTMLファイルの修正 (pdfview.html)
「/Encoding /Shift-JIS」を削除します。
<!-- %content-type application/vnd.fdf -->
%FDF-1.2
1 0 obj
<<
/FDF << /Fields [
<< /V (@注文日時)/T (orderdate)>>
<!-- %repeat -->
<< /V (@idx)/T (no@idx)>>
<< /V (@商品コード)/T (code@idx)>>
<< /V (@メーカー)/T (maker@idx)>>
<< /V (@商品名)/T (name@idx)>>
<< /V (@注文数)/T (num@idx)>>
<< /V (@金額)/T (price@idx)>>
<!-- %end -->
]
/F (http://www.101s.co.jp/pdf/order.pdf)
>>
>>
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF
1-7-2. PDF表示用の仕様定義書の修正 (pdfview.spj)
日本語文字列が使用される可能性のあるデータをエンコードするように修正します。
今回の例では「メーカー」と「商品名」が日本語文字列を使用していますので「reference」セ
クションでエンコード処理をするように定義します。
[reference]
注文日時 = $注文日時
idx = $行番号
商品コード = $商品コード
メーカー = pdf.to_unicode($メーカー)
商品名 = pdf.to_unicode($商品名)
注文数 = $注文数
金額 = $金額
[init_page]
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 8
local(sql, rs)
call ReplaceMarker(sql,
"select 行番号, o.商品コード, 商品名, メーカー, 注文数, 金額
from 注文明細 o, 商品マスター m
where 注文番号 = ?id
and o.商品コード = m.商品コード
order by 行番号"
)
call QuerySQL(rs, oracle, $sql)
local(行番号, 商品コード, 商品名, メーカー, 注文数, 金額)
call SQLResultRowArray(rs, 1, 0,
行番号, 商品コード, 商品名, メーカー, 注文数, 金額)
call ReplaceMarker(sql,
"select to_char(注文時刻, 'yyyy/mm/dd hh24:mi')
from 注文データ where 注文番号 = ?id"
)
call QuerySQL(rs, oracle, $sql)
local(注文日時)
call SQLResultRow(rs, 1, 注文日時)
1-7-3. 動作確認
図 1-6. では明細番号3のメーカーが文字化けしていましたが、この修正で改善されたこと
を確認できます。
この文字列の文字化けがなくなりました。
図 1-7. 文字化けが改善された動作画面
Copyright © 2004
101 Co., Ltd. All Rights Reserved.
Tutorial PDF 利用
- Page 9
Fly UP