FDFを使って、WebスクリプトからPDF帳票を生成する・・・を以前、PHPのインターネットアプリでやったことがあるが、今回は、イントラネットのASPアプリでやってみる。そう、いつぞやの文書・図面管理システムの追加機能として。情報をDBとファイルシステムで管理するっていう仕組みなら、帳票なんて”単なる綺麗な紙を出力したい担当者”の趣味の問題なんだけど、実際にはDBレコードとして登録はするものの、紙ファイルやキャビネット、保管庫なんかに原本管理することもある。つまり、原本とレコードを結びつける方法として、バーコードが記された帳票が必要ってわけなんですな。原本といっしょに、バーコード印刷された帳票を保管しておく。廃棄や移動の場合には、バーコードでピッピとレコード番号を読み取り、ちょっとしたアプリで、DB内のレコードを更新するみたいな。うぅむ、カンバンシステム!←1人満足
■簡単な実現方法
Export_FDF.aspというプログラムがデータベースから属性を拾い上げ、FDFを出力。サーバが公開しているWebパスに置いたPDFをバインドして表示する。せっかくのイントラネットアプリなので、レコード番号のバーコードをくっつけちゃう。
とはいっても、バーコードイメージを生成するようなツールは使わず、バーコードフォントをクライアントにインストールする”安易な”方法。無償で使えるバーコードフォントはココから拾ってきた。(注意書きを記しておけば、再配布できるようだ)
スクリプトからは、”*文書番号*”のようにFDFに書いて、表示に使用するPDFテンプレートの方で、バーコードフォントを指定しておけばOK。めでたく、スクリプトからバーコード付きPDF帳票が生成される。
ちなみに、スクリプト内で書いたFDFはこんな↓感じ
'HTTPヘッダを偽装
Response.AddHeader "Content-Disposition","attachment;filename=" & expname
Response.ContentType = "application/vnd.fdf"
'FDFフォーマット
Dim header_string
header_string = "%FDF-1.2%矣腕" & vbcrlf &_
"1 0 obj" & vbcrlf &_
"<<" & vbcrlf &_
"/FDF <<" & vbcrlf &_
" /Fields [" & vbcrlf &_
"<< /V (*" & 文書番号 & "*)/T (code39)>>"& vbcrlf ←バーコード部分
response.write header_string
Response.Flush 'ヘッダ書き出し
'レコードを取りにいって次々に書き出していく
while i < iCol-1
tmp = NULL_FUNCTION(RS2.Fields(Cstr(aryCol(i))))
response.write "<< /V (*" & フィールド値 & "*)/T (" & フィールド名 & ")>>"& vbcrlf
i=i+1
Wend
'フッタの書き出し
Dim footer_str 'FDFフッタ文字列
footer_str= "]"&vbcr & vblf&_
"/Encoding /Shift-JIS /F (" & Application("テンプレートPDFのURL") & ")"& vbcrlf &_
">>"& vbcr & vblf &_
">>"& vbcr & vblf &_
"endobj trailer"& vbcr & vblf &_
"<<" & vbcrlf &_
"/Root 1 0 R"& vbcrlf &_
">>" & vbcrlf &_
"%%EOF" & vbcrlf &_
"FDF" & vbcrlf
Response.Write(footer_str)
Response.Flush 'フッタ書き出し
Response.Clear
PDFテンプレートはワープロか表計算ソフトなどで作ったPDFファイルに、Acrobatで読み取り専用のテキストフィールドを配置することで作成する。フィールド名は、DB内で使っているフィールド名をそのまま記述する。バーコードフィールドだけは、名称をcode39で固定、表示に使用するフォントとしてCODE39を当てる。
結局、スクリプトからは、テキストしか書き出してないってのが面白い。
サーバサイドでPDFのオブジェクトやフォントオブジェクト、イメージなんかを生成しないので、動作が軽い!(HTMLを出す代わりにFDFを出してるだけ)
後は、クライアントで整形して表示してね!っていう無責任システム。いいなぁ。我ながら
その他バーコード関連の有益なサイトURL
フリーバーコード作成及びバーコードプリントソフト資源