Perl/ASPでPDF文書を作成する
〜 PDFフォーム作成方法編〜
(2005.1初版-2005.6.18改版)
INDEX;
1.サンプルアプリケーションの構成 
2.PDFフォームの作成方法 
 ・共通遍(1)〜(4)項
 ・フィールドの種別による個別編
   ・テキストフィールド
   ・コンポボックス
   ・SUBMITボタン、リセットボタン
   ・ファイル保存ボタン、印刷ボタン
   ・アイコンボタン(画像)
3.Acrobat JavaScriptの作成方法 

 >PerlでPDF文書を作成する
  (FDF Toolkit未使用)
 >ASPでPDF文書を作成する
  (FDF Toolkit使用)
   FDF Toolkit使用を使用すると、めちゃ簡単!

        
TARGET;
・Adobe AcrobatでPDFフォームを作成する。
・「表示用デフォルトPDF」及び「PDF入力フォーム用」
  の違いを理解する。
・各種ボタンの設定方法


 サイト内PDF関連リンク集
        
1.サンプルアプリケーション構成とPDFの位置付け

  サンプルアプリケーション(howtomakepdf.cgi)の解説は、 PerlでPDF文書を作成する(FDF Toolkit未使用)を参照。
図1 サンプルアプリケーション(howtomakepdf.cgi)の構成
     PDFフォームの作成方法は、「PDF入力フォーム用」及び「表示用デフォルトPDF」は同じですが、
     上図より、その位置付けを理解して下さい。その使用目的が違うので作成するフォームフィールドの数が違います。
     例えば、「PDF入力フォーム用」には送信用ボタンがありますが、「表示用デフォルトPDF」にはありません。
     (その程度の違いです)

     (PDFフォーム事例)「2.PDFフォームの作成方法」の参考にして下さい。
       ・>ringisyo-form.pdf(表示用デフォルトPDF用)
       ・>ringisyo-inform.pdf(PDF入力フォーム用:送信フォームHTML形式)
       ・>ringisyo-form2-2.pdf(表示用デフォルトPDF用:ボタンイコン、保存、印刷ボタン)
       ・>ringisyo-inform2-2.pdf(PDF入力フォーム用:ボタンイコン、保存、印刷ボタン、送信フォームFDF形式)

2.PDFフォームの作成方法

   PDFフォームの作成は、Adobe Acrobat(v4.0以上)で行います。作成できるフォームフィールドの種類はHTMLと同じですが、
   PDFフォームには「署名」フィールドがあります。
   フォームフィールドの種類(タイプ)は、コンポボックス、チェックボックス、テキスト、ボタン、ラジオボタン、リストボックス
   及び署名があります。隠しフィールド(いわゆるhidden)やAcrobat Javascript(Jvascriptと書式は同様)も設定できます。

   「PDF入力フォーム用」の場合と違い、「表示用デフォルトPDF」の場合はテキストフィールドのみで用が済みます。
   例えば、入力フォーム(PDF入力フォーム)のリストボックスの選択された値の表示は、表示用デフォルトPDFでは
   テキストフィールドに表示すればよい訳です。

 (手順)ダウンロードファイルに同梱のoriginal.pdf(\ringi\doc)を例題に使用します。Adobe Acrobatは5.0を使用しています。

  (1)Adobe Acrobatで目的のPFD(original.pdf)を開きます。
  (2)フォームツールを選択します。(注.通常の表示状態に戻すには、一番左の「手のひら」ボタンをクリックします)
          
  (3)十字ポインタをドラッグして目的の位置適切なサイズのボックスを描き、フォームフィールドを作成します。      隠しフィールド、送信ボタン、リセットボタンや注意書きは、欄外の適当な位置にドラッグします。
図2 original.pdfの一部
  (4)ドラッグアウトするとフィールドのプロパティが自動表示されます。(デフォルトは「表示方法」タブ)
(フィールドのプロパティ−表示方法画面)
(説明)「表示方法」

・名前:フィールド(項目)名。(必須)
    例. p_kenmei (半角英数字)
    HTMLの NAME=xxxxx に相当。
・種類:フォームフィールドのタイプ。(必須)
   コンポボックス チェックボックス
   テキスト    ボタン
   ラジオボタン  リストボックス
   署名 
   のいずれかを選択。
・説明:単なるメモ。
・境界線:ボタンの場合設定すると良いでしょう。
  ・境界線の色 ・背景色 ・幅 ・スタイル等
   必要に応じ選択。
・テキスト:フィールド内に表示するテキストの
  ・文字の色 ・フォント ・サイズ(Point)を
   適宜選択。サイズは、10 位が良い。
・一般プロパティ:
 ・読み取り専用:値が変わらない場合は、
      チェックを入れる。
 ・必須:省略不可の場合、チェックを入れる。
 ・表示と印刷:以下を選択します。
  ・表示:通常は表示を選択。
  ・非表示:隠しフィールド(いわゆるhidden)
    の場合、選択。
  ・表示/印刷しない:注意書き等の場合、選択
  ・非表示/印刷する:−
  ・向き:−
以上共通事項です。以下は、フィールドの種類により設定が異なります。


  (5)次に、「フィールドのプロパティ」の「オプション」、「アクション」・・・タブを順次クリックし属性を設定します。

    「オプション」の設定項目は、フィールドの種類(コンポボックス、チェックボックス、テキスト・・・)により、
     違いがあります。
    「アクション」、「フォーマット」、「検証」や「計算」等は、フィールドの種類により必要に応じ設定します。

  (5)−1 フィールドがテキストの場合

      フィールドがテキストの場合、「アクション」以降の設定は不要です。

(フィールドのプロパティ−オプション画面)
(説明)「オプション」

名前、種類、説明は表示方法画面で設定済みとします。


・デフォルト:フィールドの初期値が必要な場合、入力。
・整列:左揃え、中央、右揃えのいずれかを選択。
 ・複数行:複数行入力(HTMLの<textarea>に相当)の場合、
      チェック。
 ・スクロールなし:複数行入力の場合、スクロールしないとき、
      チェック。
 ・最大文字数:入力の最大文字数を入力。
 ・パスワード:このフィールドがパスワードの場合、チェック。
                (HTMLのTYPE=PASSWORDに相当)
 ・ファイルの選択に使用する:このフィールドがファイル参照の場合、
      チェック。     (HTMLのTYPE=FILEに相当)
 ・スペルチェックしない:−


設定が終了したら「OK」ボタンをクリックします。
Acrobatは、「フォームツール」の状態です。
次のフィールドの設定はそのまま継続できます。
設定したフォームの動作を確認したい場合は、
Acrobat画面の「手のひら」ボタンをクリックします。


  (5)−2 フィールドがコンポボックスの場合

      フィールドがコンポボックスの場合、「アクション」以降の設定は不要です。

(フィールドのプロパティ−オプション画面)
(説明)「オプション」

名前、種類、説明は表示方法画面で設定済みとします。

・項目:コンポボックスに表示される文字を、入力。
・書き出し値:フォーム送信時に送信される値を、入力。
 (操作)
  項目と書き出し値に値を入力後、「追加」ボタンを
  クリックします。入力値が下のボックスに表示されます。
  これを必要項目繰り返します。
  最後に、コンポボックスのデフォルト値を下のボックス内で選択し、
  「OK」ボタンをクリックすると終了です。

(参考:HTMLとの対応)
 <select name=p_busyo>
 <option value="書き出し値1" selected>項目1
 <option value="書き出し値2">項目2
 ・・・
 </select>


設定が終了したら「OK」ボタンをクリックします。
Acrobatは、「フォームツール」の状態です。
次のフィールドの設定はそのまま継続できます。
設定したフォームの動作を確認したい場合は、
Acrobat画面の「手のひら」ボタンをクリックします。

   (5)−3 フィールドがボタンの場合(その1 SUBMITボタン・リセットボタン)

      フィールドがボタンの場合、「アクション」の設定も必要です。

(フィールドのプロパティ−オプション画面)(5)-3-1

(フィールドのプロパティ−アクション画面)(5)-3-2
(説明)「オプション」

名前、種類、説明は表示方法画面で設定済みとします。
ボタンの場合、表示方法画面で「境界線」を設定します。

・強調表示:プッシュ(デフォルト)でよい。
・ボタンの状態:通常(デフォルト)でよい。
・レイアウト:テキストのみ(デフォルト)でよい。
・ボタンの属性:
 ・テキスト:ボタンに表示する文字を入力。例. 送信

 (操作)
  設定終了後、「アクション」タブをクリックします。

(説明)「アクション」

 (操作)
  ここの操作では画面が、
  「フィールドのプロパティ−アクション画面」→
  「動作の追加画面」→「フォーム送信の設定画面」→
  「動作の追加画面」(に戻り)→
  「フィールドのプロパティ−アクション画面」(に帰る)
   と遷移します。

 ・フィールドのプロパティ−アクション画面
  ・「この操作を行った場合に」の「マウスボタンを放す」を選択し
   「追加」ボタンをクリックします。(動作の追加画面表示)
 ・動作の追加画面
  ・「動作」‐「種類」で「フォームを送信」を選択し、
   「URLの選択」ボタンをクリックします。(フォーム送信の設定画面表示)
 ・フォーム送信の設定画面(注1)
  ・「書き出し形式」で「HTML」を選択、
  ・「このリンクのURL」で、このフォームを処理するURLを入力、
    (URLは、フルパスが望ましい)
  ・「フィールドの選択」で「すべて」を選択し、
   「OK」ボタンをクリックします。(動作の追加画面に戻る)
 ・動作の追加画面
  ・「動作設定」ボタンをクリックします。
         (フィールドのプロパティ−アクション画面に帰る)
 ・フィールドのプロパティ−アクション画面
  ・「マウスボタンを放す」の左にグリーンの小さなアイコンが表示
   されます。
   また、「以下を実行」のボックスに「フォームを送信」が表示されます。
   最後に、「OK」ボタンをクリックし、終了です。

  この要領で、「リセット」ボタンを設定できます。
  「リセット」ボタンの場合は、動作の追加画面で、
  「動作」‐「種類」で「フォームをリセット」を選択 し、
  「フィールドの選択」ボタンをクリックし、
  リセットするフィールド選択後戻ります。
  あとは同じです。
  

(SUBMITボタンの場合)
(書き出し形式がHTMLの場合、CGIが受け取れます)

 (注1)PDFフォームの送信するときの書き出し形式について(Adobe Acrobat ヘルプより抜粋)

 @「FDF」を選択すると、FDF ファイルを書き出します。フォームフィールドデータ、注釈、
  PDF に加えられた変更のいずれか、またはすべてを書き出すように設定することができま
  す。「PDF の追加変更部分」オプションを使用して書き出した電子署名は、サーバ上での
  読み込みと再構築が簡単に行えるため便利です。
  「FDF」形式は、FDF Toolkitが必要です。
  「このリンクのURL」及「フィールドの選択」は、次のように書きます。
  ・「書き出し形式」で「FDF」を選択
  ・「このリンクのURL」
    URLの末尾に #FDF を付けます。
    例. http://..../xxxxx.cgi#FDF または  http://..../xxxxx.cgi?#FDF
  ・「フィールドの選択」で「選択したフィールドのみ」(必ず)を選択し、右の「フィールドの選択」
   ボタンをクリックし、送信するフィールドを一つ一つ選択します。

 A「HTML」を選択すると、HTML ファイルを書き出します。
  「HTML」形式は、CGIがPOSTデータで受け取ることが可能です。FDF Toolkitは不要です。
 B「XML」を選択すると、XML ファイルを書き出します。フォームフィールドデータと注釈
  のいずれか、または両方を書き出すように設定することができます。
 C「文書全体( PDF)」を選択すると、入力したフォームの入ったPDF ファイルを書き出し
  ます。「FDF」オプションを選択したときよりもファイルのサイズが大きくなりますが、電
  子署名を保存できるので便利です。

  (5)−4 フィールドがボタンの場合(その2 ファイル保存・印刷ボタン)

      フィールドがボタンの場合、「アクション」の設定も必要です。
      ファイル保存・印刷ボタンの設定例;
       ・表示印刷用  :>ringisyo-form3-2.pdf


(フィールドのプロパティ−オプション画面)(5)-2-1

(フィールドのプロパティ−アクション画面)(5)-2-2
(説明)「オプション」

名前、種類、説明は表示方法画面で設定済みとします。
ボタンの場合、表示方法画面で「境界線」を設定します。

・強調表示:プッシュ(デフォルト)でよい。
・ボタンの状態:通常(デフォルト)でよい。
・レイアウト:テキストのみ(デフォルト)でよい。
・ボタンの属性:
 ・テキスト:ボタンに表示する文字を入力。
       例. ファイル保存 (印刷の場合、印刷)

 (操作)
  設定終了後、「アクション」タブをクリックします。

(説明)「アクション」

 (操作)
  ここの操作では画面が、
  「フィールドのプロパティ−アクション画面」→
  「動作の追加画面」→「メニュー項目の選択」→
  「動作の追加画面」(に戻り)→「メニュー項目の選択」→
  「フィールドのプロパティ−アクション画面」(に帰る)
   と遷移します。

 ・フィールドのプロパティ−アクション画面
  ・「この操作を行った場合に」の「マウスボタンを放す」を選択し
   「追加」ボタンをクリックします。(動作の追加画面表示)
 ・動作の追加画面
  ・「動作」‐「種類」で「メニュー項目の実行」を選択し、
   「メニュー項目の選択」ボタンをクリックします。
            (メニュー項目の選択画面表示)
 ・メニュー項目の設定画面
  ・「ファイル」→「名前を付けて保存」を選択し
   (印刷の場合は、「ファイル」→「印刷」を選択)
   「OK」ボタンをクリックします。(動作の追加画面に戻る)
 ・動作の追加画面
  ・「動作設定」ボタンをクリックします。
         (フィールドのプロパティ−アクション画面に帰る)
 ・フィールドのプロパティ−アクション画面
  ・「マウスボタンを放す」の左にグリーンの小さなアイコンが表示
   されます。
   また、「以下を実行」のボックスに「フォームを送信」が表示されます。
   最後に、「OK」ボタンをクリックし、終了です。

  この要領で、「印刷」ボタンも設定できます。

 → 

  (5)−5 フィールドがボタンの場合(その3 アイコン(画像)ボタン)

      フィールドがボタンの場合、「アクション」の設定も必要です。
      アイコン(画像)ボタンの設定例;
       ・入力フォーム用:>ringisyo-inform3-2.pdf
       ・表示印刷用  :>ringisyo-form3-2.pdf
       

(フィールドのプロパティ−オプション画面)(5)-5-1

(フィールドのプロパティ−アクション画面)(5)-5-2
(説明)「オプション」

名前、種類、説明は表示方法画面で設定済みとします。
ボタンの場合、表示方法画面で「境界線」を設定します。

・強調表示:プッシュ(デフォルト)でよい。
・ボタンの状態:通常(デフォルト)でよい。
・レイアウト:アイコンのみを選択します。
・ボタンの属性:
 ・「アイコンの選択」をクリックし、任意のデフォルト用
  画像を取り込みます。(注.表示印刷用の場合不要)

  ※表示印刷用の場合以下の操作は不要です。

 (操作)
  設定終了後、「アクション」タブをクリックします。

(説明)「アクション」

 (操作)
  ここの操作では画面が、
  「フィールドのプロパティ−アクション画面」→
  「動作の追加画面」→「Javascriptの選択」→
  「動作の追加画面」(に戻り)→
  「フィールドのプロパティ−アクション画面」(に帰る)→
  「Javascriptの編集」→
  「フィールドのプロパティ−アクション画面」(に帰る)
   と遷移します。

 ・フィールドのプロパティ−アクション画面
  ・「この操作を行った場合に」の「マウスボタンを放す」を選択し
   「追加」ボタンをクリックします。(動作の追加画面表示)
 ・動作の追加画面
  ・「動作」‐「種類」で「Javascript」→「動作設定」を選択し、
   「プロパティ−アクション画面」へ戻ります。

 ・フィールドのプロパティ−アクション画面
  ・「編集」を選択し、Javascriptを編集(入力)します。
 ・Javascriptを編集画面
  ・次のスクリプトを入力し「OK」ボタンをクリックします。
             (プロパティ−アクション画面へ戻る)
    this.getField("フィールド名").ButtonImportIcon();
     フィールド名:このボタンのフィールド名。例. photo
    このスクリプトは、PDFフォームを表示中に、このボタンを
    クリックすると、任意の画像やPDFを取り込む(貼り付け)
    ことが出来ます。
     (Adobe Acrobat 5.0/Acrobat Reader 5.0 以上)
    
 ・フィールドのプロパティ−アクション画面



設定が終了したら「OK」ボタンをクリックします。
Acrobatは、「フォームツール」の状態です。
次のフィールドの設定はそのまま継続できます。
設定したフォームの動作を確認したい場合は、
Acrobat画面の「手のひら」ボタンをクリックします。

3.Acrobat JavaScriptの作成方法

   JavaScript には、プラグイン、文書、およびフィールドの各レベルがあります。
    ・文書レベルのスクリプトは、文書を開くと実行され、開いた文書だけに適用されます。
    ・フィールドレベルのスクリプトは、特定のフォームフィールド(複数も可)に関連付けます。
     このスクリプトは、たとえば、マウスボタンを放したときなどに実行されますとか。
    ここでは、文書を開くと実行されるJavaScriptの作成例(今日の年月日を表示)を記述します。 
   
  (手順)手順の例は、PDF入力フォーム(ringisyo-inform.pdf)で使用しています。

   (1)Adobe Acrobatで目的のPFD(練習用original.pdf)を開きます。
   (2)2.PDFフォームの作成方法に習い、2-(3)図2の「起案日」に、次のテキストフィールドを作成します。
      ・名前:f_kianbi(表示方法タブ)
      ・種類:テキスト(表示方法タブ)
      ・テキスト‐サイズ:9(表示方法タブ)
      ・整列:左揃え(オプションタブ)
   (3)Adobe Acrobatの「ツール」→「JavaScript」→「文書レベルJavaScriptの編集」をクリックします。




   (4)Adobe Acrobatの「ツール」→「JavaScript」→「文書レベルJavaScriptの編集」をクリックします。       最初に、「JavaScript関数」画面が表示されます。



(「JavaScript関数」画面)

@:関数名(任意)を入力します。
A:「追加」ボタンをクリックします。(「JavaScriptの編集」画面表示)

(「JavaScriptの編集」画面)

B:次のスクリプトを入力します。

  var f = this.getField("f_kianbi");
  var nen = util.printd("yyyy",new Date());
  nen = nen - 1988;
  f.value = "平成" + nen + "年"+ util.printd("mm",new Date())+"月"+util.printd("dd",new Date())+"日"

    ・f_kianbi フィールドを変数f に代入します。---------------------(1行目)
    ・日付オブジェクトnewDate()の年部分を変数nenにutility オブジェクトで代入します。--(2行目)
    ・西暦年を和暦年に変換します。(西暦をそのまま用いる方法もあります)--------------(3行目)
    ・変数fの値に右の式を代入します。(utility オブジェクトで、日付の月、日を設定)---(4行目)

C:「OK」ボタンをクリックします。(「JavaScript関数」画面に戻る)
   (5)「JavaScript関数」画面に戻り、「閉じる」ボタンをクリックして終了します。

JavaScript関数の確認の仕方

 ・Acrobatの「手のひら」ボタンをクリックします。
 ・読み込み中のPDF(練習用original.pdf)を上書き保存しまます。
  (文書レベルスクリプトのため)
 ・保存した練習用original.pdfを再度開きます。
  日付が表示されることを確認します。

  

>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 MID FONT IE Filter Mini Bonsai Web Color List E-m@il

最終更新日:2005.6.18