ASPでPDF文書を作成する2続画像編〜超簡単、PDF文書を作成する(パート5)!
(FDF Toolkit使用)

(
「ASPでPDF文書を作成する〜超簡単、PDF文書を作成する!」(FDF Toolkit未使用)より、めちゃ簡単です。)

(2005.6.18 初版)
INDEX;

 1.サンプルアプリケーションの構成 
 2.システム構成(動作環境) 
 3.ASPアプリ作成手順
  -FDF Toolkitインストール
  -FDF処理関連メッソド 等
 4.サンプルASPソース
 5.ダウンロード 

 サイト内関連リンク

 
       
TARGET;ASPでFDF(Format Data Format)ファイルを作成し、
 PDF文書を表示・印刷・保存する。
・Adobe FDF ToolKitをインストールする。
 -FDF Tollkitを使用するとテンプレートFDFが自動生成できますので
  、手作業でテンプレートFDFを作成することがなくなります。
  すなわち、FDFのフォーマット仕様を意識しないで済みます。
・入力フォームは、書き出し形式「FDF」のPDFフォームを使用する。
・PDFフォームで動的に任意の画像の選択(画像挿入)を可能とする。
  選択された画像は、PDFに出力される(画像送信)。
・作成PDFは、予めテンプレートPDFとして用意する。
 テンプレートPDFの良い点は、
 ・様式のデザインが自由に配置できる
 ・多彩でグラフィックな様式が可能 等
・出力PDFについて、「ファイル保存」ボタン及び「印刷」ボタンを設ける。
 ・表示中出力PDFについて、いわゆる「名前を付けて保存」が可能。
 ・「印刷」ボタンで印刷が可能。
 ・画像表示も出きる。
・Webで文書(伝票)を作成する等利用が広がります。
 -社内OAで利用ができます。現在利用しているWORD文書をPDF
  に変換しAdobe AcrobatでPDFフォーム(デフォルトPDF)を
  作成すれば、Webで文書(伝票)の管理、発行が可能です。
        

1.サンプルアプリケーションの構成

図1 サンプルASPアプリケーションの構成
(説明)
 (1) *1:PDF入力フォーム(書き出し形式「FDF」)
     ・PDF入力フォーム(入力用):ringisyo-inform2-2.pdfを参照。
      (内容)
       件名テキストフィールド  起案日テキストフィールド 起案者テキストフィールド
       内容テキストフィールド  出力方法コンポボックス  送信サブミットボタンフィールド
       リセットボタンフィールド 画像用ボタンフィールド  メモテキストフィールド等
         (注1)画像はボタンフィールドとして定義します。
         (注2)送信サブミットボタンフィールドでのプロパティ(このリンクのURL画面)で設定するURLに注意して下さい。
             例. http://.../parsefdf-sample.asp?#FDF と書き出し形式が「FDF」の場合、URLの後に #FDF を付けます。
                (HTMLフォームのACTION=に相当)
     ・PDF入力フォーム作成方法は、「PerlでPDF文書を作成する〜超簡単、PDF文書を作成する!」を参照
 (2) *2:画像ファイル
     PDF入力フォームの画像用ボタンをクリックすると任意の画像を取り込み、そこに表示します。
 (3) *3:出力用テンプレートPDF(\pfdフォルダに保存)
     ・テンプレートPDF(出力用):ringisyo-form2-2.pdfを参照
      (内容)
       件名テキストフィールド 起案日テキストフィールド 起案者テキストフィールド
       内容テキストフィールド 画像用ボタンフィールド  ファイル保存用ボタンフィールド
       印刷用ボタンフィールド
         (注1)画像はボタンフィールドとして定義します。
         (注2)ファイル保存用ボタンフィールド、印刷用ボタンフィールドは、
             フィールドプロパティで「表示/印刷しない」を設定しています。
     ・テンプレートPDFの作成方法は、「PerlでPDF文書を作成する〜超簡単、PDF文書を作成する!」を参照
 (4) *4,*5,*7:処理結果
    OUT@(*2):PDFをクライアント画面に表示します。
          ・PDFファイルとして保存できます。(ファイル保存用ボタン)*7
          ・印刷用ボタンで印刷ができます。
    OUTA(*3):処理結果のFDFファイルをサーバーに保存します。クライアント画面には、ハイパーリンクを
           表示します。クリックによりPDFをクライアント画面に表示します。
           表示中は、OUT@(*2)と同様に、ファイル保存*7、印刷ができます。
           このFDFファイルは削除されずサーバに残ります。

 (5) *6:FDFファイル(\tmpフォルダに保存。サーバーに残ります。)
    例. fdfsave-200505131454206414.fdf
     fdfsave-:固定
     200505131454206414:年月日+時分秒+4桁の乱数(重複を避けるため)
     >FDFファイルの実例注.このファイルを表示するために次のこと予め行ってください)
     ※ローカルホストのURLパスhttp://localhost/actxfdf/pdf にringisyo-form2-2.pdf(前項(3))をダウンロードして下さい。
 (6) *8:画像用作業PDFファイル(\tmpフォルダに保存。処理後自動削除。)
    例. iconpdf-200505131454206414.pdf
     iconpdf-:固定
     200505131454206414:年月日+時分秒+4桁の乱数(重複を避けるため)
     送信画像は、この画像用作業PDFファイルを介して送信されます。
      @入力のPDFフォームで選択された画像は、入力バッファーから画像をGetAPSメソッドで"画像だけのPDFファイル"を作成します。
      A次に、この"画像だけのPDFファイル"から、画像をSetAPメソッドで出力バッファーに設定します。
 (7)サンプルASPのファイル構成(このファイル全体をダウンロードできます)
    
表1 サンプルASPのファイル構成
 [actxfdf] (テスト環境パス C:\Inetpub\wwwroot\actxfdf)
      +--[img]               ←画像類
      +--[pdf]               ←PDFファイル保存フォルダ
           +--ringisyo-form.pdf      ←表示用テンプレートPDF(ASPでPDF文書を作成する)
           +--ringisyo-inform2-2.pdf ←入力用PDFフォーム(ASPでPDF文書を作成する2続画像編)
           +--ringisyo-form2-2.pdf   ←表示用テンプレートPDF(ASPでPDF文書を作成する2続画像編)
      +--[tmp]                   ←作成FDF/画像用作業PDFファイル保存フォルダ
      +--howtomake-pdf2.html     ←ASPでPDF文書を作成する解説
      +--howtomake-pdf2-2.html   ←本ページASPでPDF文書を作成する2続画像編解説
      +--generatefdf-sample.asp  ←ASPでPDF文書を作成するのサンプルASP
      +--parsefdf-sample.asp     ←ASPでPDF文書を作成する2続画像編のサンプルASP
       
        
 (8)起動方法

    @ASPでPDF文書を作成するのサンプルASP

     http://.../actxfdf/generatefdf-sample.asp(ASPを起動します)

    AASPでPDF文書を作成する2続画像編のサンプルASP(本ページサンプル)

     http://.../actxfdf/pdf/ringisyo-inform2-2.pdf(ringisyo-inform2-2.pdfを直接起動します)

2.システム構成

  動作環境は下表のとおりです。
表2 システム構成
走行確認OS
(サーバー)
・Windows2000 Server
・Windows2000Pro+IIS5(TEST環境)
・Windows98SE+PWS(TEST環境)
Windows XP+IIS5では、未確認です。
必要ソフト
(サーバ)
・FdfAcx.dll(ActiveXコンポーネント用)
・FdfTk.dll(Toolkit用)

dll のインストールが必要
クライアント・InternetExplorler5.0以上
・Adobe Acrobat4.0以上(PDFフォーム作成用)
・Acrobat Reader4.0以上
ユーザクアリアントでは、Adobe Acrobatは不要
 (注1)サーバにはAdobe FDF ToolKit for ActiveX(FdfAcx.dll及びFdfTk.dll)のインストールが必要です。
    FDF ToolKitは、http://partners.adobe.com/asn/developer/acrosdk/form.html より入手します。
    (フリーですがパートナー登録が必要です)
 (注2)Adobe Acrobat4.0以上が必要です。画像処理用には、Adobe Acrobat5.0以上が望ましい。
     (クライアントのユーザはAdobe Acrobat不要です)

3.ASPアプリ作成手順

   >PerでPDF文書を作成する2〜超簡単、PDF文書を作成する(パート3)!(FDF Toolkit使用)と同様です。 

 (1)作成PDF文書の作成
    WORDやEXCELで作成し、PDFに変換します。
 (2)PFDフォームの作成(テンプレートPDFまたはデフォルトPDFと言う)
      前項(1)で作成したPDFをAdobe Acrobatで次の2種類のPDFフォームを作成します。
     @PDF入力フォーム(入力用):例.ringisyo-inform2-2.pdfを参照。
     AテンプレートPDF(出力用):例.ringisyo-form2-2.pdfを参照
    PDFフォームの作成方法は、「PerlでPDF文書を作成する〜超簡単、PDF文書を作成する!」を参照。
    
 (3)Perl CGI(アプリケーション)の作成(言語インターフェース)

   >PerでPDF文書を作成する2〜超簡単、PDF文書を作成する(パート3)!(FDF Toolkit使用)を参照。 

 (4)Perl及びFDF ToolKit for Perlのインストール(初回のみ)

   >PerでPDF文書を作成する2〜超簡単、PDF文書を作成する(パート3)!(FDF Toolkit使用)を参照。 

4.サンプルASPソース

   サンプルPerl CGI(parsefdf-sample.cgi)は、データの入力がPDFフォームからの「FDF」形式に対応しています。
parsefdf-sample.cgi
<%@ LANGUAGE = VBScript%>
<%
'/////FDF ToolKit for ActiveX を用いたPDFの作り方-2005.6.11 ma3ki///////////////////////////////////'
'1.テンプレート用FDFが不要です。
'2.入力フォームは、PDFフォームを処理します。任意の画像を送信出来ます。
'3.PDF(FDF)の出力方法には3通りあります。送信した画像を表示します。
'  (1)ファイル作成:サーバにFDFファイルを名を付けて保存(HTMLにハイパーリンク表示)
'  (2)画面表示:PDFを画面に直接表示。PDFファイルで保存できます(「ファイル保存」ボタン)。
'///////////////////////////////////////////////////////////////////////////////////////////////////'
Dim ransuu,dates,times,fdfoutname,iconpdfname
'環境設定項目(環境に合わせて変更します)******************************
outPDF_url = "http://localhost/actxfdf/pdf/ringisyo-form2-2.pdf" '出力用テンプレートPDFファイル名(フルURL) (1/3)
TEMP_path = "C:\Inetpub\wwwroot\actxfdf\tmp\"                    '作業用フォルダ(物理パス)。末尾\を付ける。(2/3)
TEMP_url  = "http://localhost/actxfdf/tmp/"                      '同上URL。            末尾/を付ける。(3/3)
'環境設定項目 END******************************************************
'--保存FDFファイル名   :fdfsave-yymmddhhmmss-4桁の乱数.fdf
'--画像用作業PDFファイル名:iconpdf-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ファイル名
iconpdfname = "iconpdf-" & yymmdd & hhmmss & CStr(ransuu) & ".pdf" '画像用作業PDFファイル名
'
Dim FdfAcx,outFDF,FDFin
Const FDFNormalAP = 0    'GetAP/SetAPメソッド用パラメータ(通常はこの値)
Const FDFRolloverAP = 1  'GetAP/SetAPメソッド用パラメータ
Const FDFDownAP = 2      'GetAP/SetAPメソッド用パラメータ
'FDF ActiveX オブジェクトの定義
Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
'PDFフォームデータ読み込み(バイナリーデータ含む)
Set FDFin = FdfAcx.FDFOpenFromBuf (Request.BinaryRead(Request.TotalBytes))
'フィールドデータ取得
 p_kenmei = FDFin.FDFGetValue ("f_kenmei") '件名
 p_kianbi = FDFin.FDFGetValue("f_kianbi")  '起案日
 p_kiansya= FDFin.FDFGetValue("f_kiansya") '起案者
 p_naiyo  = FDFin.FDFGetValue("f_naiyo")   '内容
 out      = FDFin.FDFGetValue("out")       '出力方法 file/gamen/dload
'入力バッファーから、ボタンアイコン(画像)を読み込み、新しい画像用PDFを生成する。
 FDFin.FDFGetAP "photo", FDFNormalAP, TEMP_path & iconpdfname

'--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オープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set resFDF = FdfAcx.FDFOpenFromFile(Mypath)

'新しいFDF生成     (入力FDFの指定方法2)
Set outFDF = FdfAcX.FDFCreate

'テンプレートFDF内の変数(/V key)に値を設定
 outFDF.FDFSetValue "p_kenmei",p_kenmei,False
 outFDF.FDFSetValue "p_kianbi",p_kianbi,False
 outFDF.FDFSetValue "p_kiansya",p_kiansya,False
 outFDF.FDFSetValue "p_naiyo",p_naiyo,False
 outFDF.FDFSetFile outPDF_url 'テンプレートPDFのURL(フルパスが望ましい)
'画像用作業PDFファイルから、画像を読み込み出力バッファーに設定する
 outFDF.FDFSetAP "photo", FDFNormalAP, TEMP_path & iconpdfname , 1
'設定結果のFDFをファイル名を付けてクライアントでダウンロード
Response.ContentType = "application/vnd.fdf" 'MIMEタイプ FDF
Response.AddHeader "Content-Disposition","attachment; filename=" & fdfoutname 'アタッチメント ファイル名の設定
Response.BinaryWrite outFDF.FDFSaveToBuf 'FDFデータをバッファーに出力
'クローズ
outFDF.FDFClose
FDFin.FDFClose
set outFDF = nothing
set FDFin = nothing
set FdfAcx = nothing
End sub
'FDFファイルをサーバに保存する------------------------------------------
sub file_fdfout()

'テンプレートFDFオープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set outFDF = FdfAcx.FDFOpenFromFile(Mypath)

'新しいFDF生成     (入力FDFの指定方法2)
Set outFDF = FdfAcX.FDFCreate

'テンプレートFDF内の変数(/V key)に値を設定
 outFDF.FDFSetValue "p_kenmei",p_kenmei,False
 outFDF.FDFSetValue "p_kianbi",p_kianbi,False
 outFDF.FDFSetValue "p_kiansya",p_kiansya,False
 outFDF.FDFSetValue "p_naiyo",p_naiyo,False
 outFDF.FDFSetFile outPDF_url 'テンプレートPDFのURL(フルパスが望ましい)
'画像用作業PDFファイルから、画像を読み込み出力バッファーに設定する
 outFDF.FDFSetAP "photo", FDFNormalAP, TEMP_path & iconpdfname , 1
'設定結果のFDFをファイル名を付けて保存
outFDF.FDFSavetoFile TEMP_path & fdfoutname 'FDFファイルの保存物理パス(フルパス)
'クローズ
outFDF.FDFClose
FDFin.FDFClose
set outFDF = nothing
set FDFin = 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=""" & TEMP_url & fdfoutname & """>" & fdfoutname & "</a></p>" & chr(13) '保存FDFファイルのハイパーリンク
 Response.write "</body></html>" & chr(13) 
'画像用作業PDFファイル削除
delfile = TEMP_path & iconpdfname
Set objDel = CreateObject("Scripting.FileSystemObject")
 objDel.DeleteFile delfile
'objDel.Close
set objDel = nothing
End sub
'PDFをクライアントの画面に直接表示する----------------------------------------
sub gamen_fdfout()

'テンプレートFDFオープン(入力FDFの指定方法1)
'Mypath = server.mappath("./pdf/ringisyo-templatefdf.fdf") 'テンプレートFDFのURL(相対パス)
'Set outFDF = FdfAcx.FDFOpenFromFile(Mypath)

'新しいFDF生成     (入力FDFの指定方法2)
Set outFDF = FdfAcX.FDFCreate

'テンプレートFDF内の変数(/V key)に値を設定
 outFDF.FDFSetValue "p_kenmei",p_kenmei,False
 outFDF.FDFSetValue "p_kianbi",p_kianbi,False
 outFDF.FDFSetValue "p_kiansya",p_kiansya,False
 outFDF.FDFSetValue "p_naiyo",p_naiyo,False
 outFDF.FDFSetFile outPDF_url 'テンプレートPDFのURL(フルパスが望ましい)
'画像用作業PDFファイルから、画像を読み込み出力バッファーに設定する
 outFDF.FDFSetAP "photo", FDFNormalAP, TEMP_path & iconpdfname , 1

'設定結果を出力する
Response.ContentType = "application/vnd.fdf" 'MIMEタイプ FDF
Response.BinaryWrite outFDF.FDFSaveToBuf 'FDFデータをバッファーに出力
'クローズ
outFDF.FDFClose
FDFin.FDFClose
set outFDF = nothing
set FDFin = nothing
set FdfAcx = nothing

'画像用作業PDFファイル削除
delfile = TEMP_path & iconpdfname
Set objDel = CreateObject("Scripting.FileSystemObject")
 objDel.DeleteFile delfile
'objDel.Close
set objDel = nothing
End sub
'HTML ヘッダー---------------------------------------------
sub htmlheader() '入力フォーム画面
Response.write "<html>" & chr(13)
Response.write "<head>" & chr(13)
Response.write "<title>FDFリンク</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のダウンロード(フリー)

    ダウンロードファイル(最終更新日:2005.6.18)の内容は、
    「1.サンプルアプリケーションの構成-表1 サンプルASPのファイル構成」です。
>UP

(サイト内PDF関連リンク)
NoタイトルFDF Toolkitスクリプト備考
1 PerlでPDF文書を作成する〜超簡単、PDF文書を作成する!(FDF Toolkit未使用例) 不要Perl CGI
2 PDFフォーム作成方法編 -HTML
3 ASPでPDF文書を作成する〜超簡単、PDF文書を作成する(パート2)!(FDF Toolkit使用) 必要ASP
4 PerでPDF文書を作成する2〜超簡単、PDF文書を作成する(パート3)!(FDF Toolkit使用) 必要Perl CGI
5 PerでPDF文書を作成する2続画像編〜超簡単、PDF文書を作成する(パート4)!(FDF Toolkit使用) 必要Perl CGI画像送信
6 ASPでPDF文書を作成する2画像続編〜超簡単、PDF文書を作成する(パート5)!(FDF Toolkit使用) 必要ASP画像送信


HOME Profile BBS Chat Game Center GD Graph PDF Make ASP Apli Make MID FONT IE Filter Mini Bonsai Web Color List E-m@il

最終更新日:2005.6.18