INDEX; 1.サンプルアプリケーションの構成 2.システム構成(動作環境) 3.ASPアプリ作成手順 -FDF Toolkitインストール -FDF処理関連メッソド 等 4.サンプルASPソース 5.ダウンロード >ASPでPDF文書を作成する2続画像編〜 超簡単、PDF文書を作成する(パート5)! (FDF Toolkit使用)05.6.18 ・・・簡単 PDFフォーム入力&画像送信!! >サイト内PDF関連リンク |
TARGET;
・ASPでFDF(Format Data Format)ファイルを作成し、
PDF文書を表示・印刷する。
・Adobe FDF ToolKitをインストールする。
-FDF Tollkitを使用するとテンプレートFDF生成できますので
、手作業でテンプレートFDFを作成することがなくなります。
すなわち、FDFのフォーマット仕様を意識しないで済みます。
・入力フォームは、HTMLを使用する。
・作成PDFは、予めテンプレートPDFとして用意する。
テンプレートPDFの良い点は、
・様式のデザインが自由に配置できる
・多彩でグラフィックな様式が可能 等
・Webで文書(伝票)を作成する等利用が広がります。
-社内OAで利用ができます。現在利用しているWORD文書をPDF
に変換しAdobe AcrobatでPDFフォーム(デフォルトPDF)を
作成すれば、Webで文書(伝票)の管理、発行が可能です。
|
1.サンプルアプリケーションの構成
![]() |
||
(説明) (1) *1:サンプルASPの入力フォーム |
(6)起動方法 http://.../actxfdf/generatefdf-sample.asp (パラメータなし)
2.システム構成
動作環境は下表のとおりです。
|
(注1)サーバにはAdobe FDF ToolKit for ActiveX(FdfAcx.dll及びFdfTk.dll)のインストールが必要です。 FDF ToolKitは、http://www.adobe.com/devnet/acrobat/fdftoolkit.html より入手します。(2008.8.25)(フリーですがパートナー登録が必要です)>FDF ToolKit インストール方法 (注2)Adobe Acrobat4.0以上が必要です
3.ASPアプリ作成手順
(1)作成PDF文書の作成
WORDやEXCELで作成し、PDFに変換します。
(2)PFDフォームの作成(テンプレートPDFまたはデフォルトPDFと言う)
前項(1)で作成したPDFをAdobe AcrobatでPDFフォームを作成します。
PDFフォームの作成方法は、「PerlでPDF文書を作成する〜超簡単、PDF文書を作成する!」を参照
(3)ASP(アプリケーション)の作成(FDF Toolkit メソッド仕様)
●FDF Toolkitオブジェクト生成
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
●FDF Toolkitメソッド(主なものみ掲載しています)
| メソッド | 説明 | ||
| 1 | FDFAppオブジェクト関連(全5メソッド) | ||
| FDFCreate | 新しいFDFファイルを生成する。 Set resFDF = FdfAcX.FDFCreate | ||
| FDFOpenFromFile | 外部ファイルをオープンする。 Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") Set resFDF = FdfAcx.FDFOpenFromFile(Mypath) | ||
| FDFOpenFromBuf | バッファーからFDFをオープンする。 Set FDFin = FdfAcx.FDFOpenFromBuf (Request.BinaryRead(Request.TotalBytes)) | ||
| FDFOpenFromStr | ストリングをオープンする。 | ||
| 2 | 一般メソッド(全7メソッド) | ||
| FDFClose | FDFファイルが使用したリソースをクローズする。 Set resFDF = FdfAcx.FDFOpenFromFile(Mypath) ・・・ resFDF.FDFClose | ||
| FDFSaveToBuf | 処理した結果をバッファーに書き出す。 resFDF.FDFSetValue "p_kiansya",p_kiansya,False '処理 ・・・ Response.ContentType = "application/vnd.fdf" Response.BinaryWrite resFDF.FDFSaveToBuf | ||
| FDFSaveToFile | 処理した結果をファイルに書き出す。 resFDF.FDFSavetoFile "C:\Inetpub\wwwroot\actxfdf\tmp\" & fdfoutname | ||
| FDFSaveToStr | 処理した結果をストリングに書き出す。 | ||
| 3 | FDFデータをパース(GET)するメソッド (全13メソッド) | ||
| FDFGetAP |
FDF(入力バッファー)の/APフィールドの外観(アイコン画像)を取得し、
新しいPDF(img.pdf)を生成する。(画像のみのPDFが出来る)
Const FDFNormalAP = 0
Set FDFin = FdfAcx.FDFOpenFromBuf (Request.BinaryRead(Request.TotalBytes))
'''(↑ PDFフォームの書き出し形式「FDF」のデータをバッファーに読み込む場合)
FDFin.FDFGetAP "photo", FDFNormalAP, "C:\Inetpub\wwwroot\ringi2\tmp\img.pdf"
(パラメータ)
・"photo"(fieldName):ボタンアイコンのフィールド名
・FDFNormalAP(whichFace):
FDFNormalAP/FDFRolloverAP/FDFDownAPのいずれかの値
Activexの場合、0/1/2 の値を書きます。
・fileName:新しく生成するPDFファイル名
"C:\Inetpub\wwwroot\ringi2\tmp\img.pdf"
| ||
| 4 | FDFデータを設定(SET)するメソッド (全25メソッド) | ||
| FDFSetAP |
PDF(img.pdf)から/APキーの外観(アイコン画像)を取得し、 FDF(出力バッファー)に設定する。 outFDF.FDFSetAP "photo", FDFNormalAP, "C:\Inetpub\wwwroot\ringi2\tmp\img.pdf",1 (パラメータ) ・ "photo"(fieldName):ボタンフィールドのフィールド名 ・FDFNormalAP(whichFace): FDFNormalAP/FDFRolloverAP/FDFDownAPのいずれかの値 Activexの場合、0/1/2 の値を書きます。 ・subAP:Activexの場合、記入しない。 ・fileName:ボタンが存在するPDFファイル名 "C:\Inetpub\wwwroot\ringi2\tmp\img.pdf" ・pageNum:ボタンが存在するPDFファイルのページNo。1 | ||
| FDFSetFile | FDFの/Fキーの値を設定する。(テンプレートPDFのURL) resFDF.FDFSetFile "http://127.0.0.1/actxfdf/pdf/ringisyo-form.pdf" | ||
| FDFSetValue | FDFの/Vキーの値を設定する。 resFDF.FDFSetValue "p_kiansya","松浦亜弥",False |
(4)FDF ToolKit for ActiveX(ASP用)のインストール(初回のみ)
![]() |
4.サンプルASPソース
サンプルASP(generatefdf-sample.asp)は、データの入力はHTMLフォームからの
POSTデータのみ対応しています。FDFデータの入力処理は対応していません。
FDFデータ(PDFフォーム)対応サンプルASPは、>超簡単、PDF文書を作成する(パート5)!
<%@ LANGUAGE = VBScript%>
<%
'/////FDF ToolKit for ActiveX を用いたPDFの作り方-2005.4.13 ////////////////////////////////////////'
'1.テンプレート用FDFが不要です。
'2.PDF(FDF)の出力方法には3通りあります
' (1)ダウンロード:クライアントにFDFファイルを名を付けてアタッチメント(ダウンロード画面表示)
' (2)ファイル作成:サーバにFDFファイルを名を付けて保存(HTMLにハイパーリンク表示)
' (3)画面表示:PDFを画面に直接表示
'///////////////////////////////////////////////////////////////////////////////////////////////////'
Dim ransuu,dates,times,fdfoutname
'--入力フォームデータ
p=request("p") '機能区分 p=f(入力フォーム) p=fdf(FDF作成)
out=request("out") '出力方法 dload(ダウンロード) file(サーバにファイル作成) gamen(画面に直接表示)
p_kenmei=request("f_kenmei")
p_kianbi=request("f_kianbi")
p_kiansya=request("f_kiansya")
p_naiyo=request("f_naiyo")
'--入力フォーム表示
if p = "" then
call informdisp()
Response.End
end if
'以下FDF処理
'--出力ファイル名作成 ファイル名:fdfsave-yymmddhhmmss-4桁の乱数.fdf
dates=Date '年月日yymmdd
times=Time '時分秒hhmmss
yymmdd=Replace(dates,"/","") 'yy/mm/dd の/を削除し数字のみにする
hhmmss=Replace(times,":","") 'hh:mm:ss の:を削除し数字のみにする
Randomize '乱数の初期化
ransuu = int(10000*Rnd) '乱数 出力ファイル名の一部に使用(ファイル名の重複をさける)
fdfoutname="fdfsave-" & yymmdd & hhmmss & CStr(ransuu) & ".fdf" 'FDFファイル名
Dim FdfAcx,resFDF
'--FDF出力方法の振り分け
Select Case out
Case "dload"
call dload_fdfout() 'FDFファイルダウンロード。ダウンロード画面表示。
Case "file"
call file_fdfout() 'サーバにファイル保存。画面にハイパーリンクを表示。クリックでPDF表示。
Case "gamen"
call gamen_fdfout() 'PDF画面表示
End Select
'###サブルーチン###
'FDFファイルをクライアントにダウンロードする----------------------------------------
sub dload_fdfout()
'FDF ActiveX オブジェクトの定義
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
'テンプレートFDFオープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set resFDF = FdfAcx.FDFOpenFromFile(Mypath)
'新しいFDF生成 (入力FDFの指定方法2)
Set resFDF = FdfAcX.FDFCreate
'テンプレートFDF内の変数(/V key)に値を設定
resFDF.FDFSetValue "p_kenmei",p_kenmei,False
resFDF.FDFSetValue "p_kianbi",p_kianbi,False
resFDF.FDFSetValue "p_kiansya",p_kiansya,False
resFDF.FDFSetValue "p_naiyo",p_naiyo,False
resFDF.FDFSetFile "http://127.0.0.1/actxfdf/pdf/ringisyo-form.pdf" 'テンプレートPDFのURL(フルパスが望ましい)
'設定結果のFDFをファイル名を付けてクライアントでダウンロード
Response.ContentType = "application/vnd.fdf" 'MIMEタイプ FDF
Response.AddHeader "Content-Disposition","attachment; filename=" & fdfoutname 'アタッチメント ファイル名の設定
Response.BinaryWrite resFDF.FDFSaveToBuf 'FDFデータをバッファーに出力
'クローズ
resFDF.FDFClose
set resFDF = nothing
set FdfAcx = nothing
End sub
'FDFファイルをサーバに保存する------------------------------------------
sub file_fdfout()
'FDF ActiveX オブジェクトの定義
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
'テンプレートFDFオープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set resFDF = FdfAcx.FDFOpenFromFile(Mypath)
'新しいFDF生成 (入力FDFの指定方法2)
Set resFDF = FdfAcX.FDFCreate
'テンプレートFDF内の変数(/V key)に値を設定
resFDF.FDFSetValue "p_kenmei",p_kenmei,False
resFDF.FDFSetValue "p_kianbi",p_kianbi,False
resFDF.FDFSetValue "p_kiansya",p_kiansya,False
resFDF.FDFSetValue "p_naiyo",p_naiyo,False
resFDF.FDFSetFile "http://127.0.0.1/actxfdf/pdf/ringisyo-form.pdf" 'テンプレートPDFのURL(フルパスが望ましい)
'設定結果のFDFをファイル名を付けて保存
resFDF.FDFSavetoFile "C:\Inetpub\wwwroot\actxfdf\tmp\" & fdfoutname 'FDFファイルの保存物理パス(フルパス)
'クローズ
resFDF.FDFClose
set resFDF = nothing
set FdfAcx = nothing
'HTMLにハイパーリンクを表示
Call htmlheader
Response.write "<body style=""font-size:15px"">" & chr(13)
Response.write "<p align=center style=""font-size:15px"">FDFファイルを作成しました・・・ファイル名をクリックして下さい。<br><br>" & chr(13)
Response.write "<a href=""http://127.0.0.1/actxfdf/tmp/" & fdfoutname & """>" & fdfoutname & "</a></p>" & chr(13) '保存FDFファイルのハイパーリンク
Response.write "</body></html>" & chr(13)
End sub
'PDFをクライアントの画面に直接表示する----------------------------------------
sub gamen_fdfout()
'FDF ActiveX オブジェクトの定義
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
'テンプレートFDFオープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set resFDF = FdfAcx.FDFOpenFromFile(Mypath)
'新しいFDF生成 (入力FDFの指定方法2)
Set resFDF = FdfAcX.FDFCreate
'テンプレートFDF内の変数(/V key)に値を設定
resFDF.FDFSetValue "p_kenmei",p_kenmei,False
resFDF.FDFSetValue "p_kianbi",p_kianbi,False
resFDF.FDFSetValue "p_kiansya",p_kiansya,False
resFDF.FDFSetValue "p_naiyo",p_naiyo,False
resFDF.FDFSetFile "http://127.0.0.1/actxfdf/pdf/ringisyo-form.pdf" 'テンプレートPDFのURL(フルパスが望ましい)
'設定結果のFDFをファイル名を付けてクライアントでダウンロード
Response.ContentType = "application/vnd.fdf" 'MIMEタイプ FDF
'Response.AddHeader "Content-Disposition","attachment; filename=" & fdfoutname '画面表示の場合ファイル名不要
Response.BinaryWrite resFDF.FDFSaveToBuf 'FDFデータをバッファーに出力
'クローズ
resFDF.FDFClose
set resFDF = nothing
set FdfAcx = nothing
End sub
'入力フォーム画面-------------------------------------------
sub informdisp()
Call htmlheader
Response.write "<body style=""font-size:15px"">" & chr(13)
Response.write " <form method=post action=""generatefdf-sample.asp"" name=f target='_self'>" & chr(13)
Response.write " <input type=hidden name=p value=""fdf"">" & chr(13)
Response.write " <TABLE cellpadding=0 cellspacing=0 bgcolor=navy border=0><TR><TD>" & chr(13)
Response.write " <table style='font-size:15px' cellpadding=3 cellspacing=1><caption style='font-weight:bold;font-size:16px;color:#ffffff'>稟議書作成</caption>" & chr(13)
Response.write " <tr bgcolor=lightcyan><td nowrap>件名</td><td><input type=text name=f_kenmei value="""" size=60 maxlength=80></td></tr>" & chr(13)
Response.write " <tr bgcolor=lightcyan><td nowrap>起案日</td><td nowrap>" & chr(13)
Response.write " <input type=text name=f_kianbi value="""" size=40 maxlength=20></td></tr>" & chr(13)
Response.write " <tr bgcolor=lightcyan><td nowrap>起案者</td><td nowrap>" & chr(13)
Response.write " <select name=f_busyo>" & chr(13)
Response.write " <option>総務課" & chr(13)
Response.write " <option>広報課" & chr(13)
Response.write " <option>営業部" & chr(13)
Response.write " <option>システム開発部1課" & chr(13)
Response.write " <option>システム開発部2課" & chr(13)
Response.write " </slect><input type=text name=f_kiansya value="""" size=40 maxlength=40><small>(所属部署、氏名</small>" & chr(13)
Response.write " </td></tr>" & chr(13)
Response.write " <tr bgcolor=lightcyan><td nowrap>内容<br><small>(1000文字以内)</small></td><td><textarea name=f_naiyo rows=6 cols=76 wrap=hard></textarea></td></tr>" & chr(13)
Response.write " <tr bgcolor=lightcyan> <td colspan=2 align=center nowrap>" & chr(13)
Response.write " <input type=radio name=out value=""dload"">ダウンロード<input type=radio name=out value=""file"" >FDFファイル作成<input type=radio name=out value=""gamen"" >画面直接表示 " & chr(13)
Response.write " <input type=button name=subm value=""作 成"" CLASS=botan1 onClick=""form_check()"">" & chr(13)
Response.write " <input type=reset name=subm value=""リセット"" CLASS=botan1></td></tr>" & chr(13)
Response.write " </table>" & chr(13)
Response.write " </TD></TR></TABLE>" & chr(13)
Response.write " </form>" & chr(13)
Response.write " </body></html>" & chr(13)
End sub
'HTML ヘッダー---------------------------------------------
sub htmlheader() '入力フォーム画面
Response.write "<html>" & chr(13)
Response.write "<head>" & chr(13)
Response.write "<title>稟議書入力フォーム</title>" & chr(13)
Response.write "<meta http-equiv=""Content-Type"" content=""text/html; charset=Shift_JIS"">" & chr(13)
Response.write "<SCRIPT language=javascript>" & chr(13)
Response.write "<!--" & chr(13)
Response.write "function form_check(){" & chr(13)
Response.write " document.f.submit() " & chr(13)
Response.write "}" & chr(13)
Response.write "//-->" & chr(13)
Response.write "</SCRIPT>" & chr(13)
Response.write "</head>" & chr(13)
End sub
%>
|
5.サンプルASPダウンロード
・サンプルASPのダウンロード(フリー) ダウンロードファイルの内容は、 「1.サンプルアプリケーションの構成-表1 サンプルASPのファイル構成」です。
|
|
|
最終更新日:2008.8.25(Toolkit download site 変更)