Forms Data Format (FDF)は、PDFドキュメント内部のフォームを処理する ためのフォーマットです。FDFの詳細および一般的な用途については、 http://partners.adobe.com/asn/developer/acrosdk/forms.html にあるドキュメン トを参照下さい。
FDFの基本的な考えは、HTMLフォームに似ています。基本的な違いは、投 稿ボタンが押された際にフォームに埋められたデータをサーバーに送信す る方法のフォーマット(これがForm Data Format そのものです)およびフォー ムのフォーマット自体(これは Portable Document Format、PDFです)です。 FDFデータの処理は、fdf関数に提供された機能の一つです。しかし機能は 他にもあります。既存のPDFフォームを用いてフォーム自体を修正せずに 入力フィールドのデータを入力させることもあるかと思われます。 このような場合、FDFドキュメント を作成 (fdf_create() )、各入力フィールドの値を設定 (fdf_set_value() )、PDFフォームとそれを関連付け (fdf_set_file() )ます。最後にブラウザに MIME型 application/vnd.fdf で送信する必要があります。ブラウザの Acrobat Reader プラグイン がこの MIME 型を認識し、関連する PDF フォームを 読み込み、FDF ドキュメントからのデータを書き込みます。
テキストエディタでFDFドキュメントの中を見てみると、 FDF という名前のカタログオブジェクトが見つかるは ずです。このようなオブジェクトには、 Fields, F, Status といった複数のエン トリが含まれます。 最も多く使用されるエントりは、一連の入力フィールドを指す Fields とこのデータが属するPDFドキュメントのファ イル名を保持する F です。これらのエントリは、 FDFドキュメントの中で/F-Keyまたは /Status-Keyのように参照されてい ます。 fdf_set_file() および fdf_set_status() のような関数によりこれらのエン トリを修正することが可能です。Fields は、 fdf_set_value(), fdf_set_opt() 等で修整可能です。
http://partners.adobe.com/asn/developer/acrosdk/forms.html から取得可能な FDF toolkit SDKが必要です。 PHP 4.3以降、少なくともSDK version 5.0が必要です。 FDF toolkit libraryは、バイナリ版のみ利用可能で、 Adobeによりサポートされているプラットフォームは、 Win32, Linux, Solaris, AIXです。
--with-fdftk[=DIR] を指定してPHPを コンパイルする必要があります。
注意 fdftkサポートを指定してPHPを設定した際に問題を発生した場合、 ヘッダファイル fdftk.h および ライブラリ libfdftk.so が正しい場所にあること を確認して下さい。configureスクリプトは、FDF SDK配布ファイルおよび 通常の DIR/include 、 DIR/lib といった配置のディレクトリ構造をともに サポートします。このため、展開した配布ディレクトリまたは --with-fdftk=/usr/local により /usr/local/include および /usr/local/lib のように使用するプラットフォー ムに応じた適当なヘッダファイルおよびライブラリのどちらかを指定する ことが可能です。
Win32ユーザへの注意 Windows環境でこのモジュールを有効にするには、PHP/Win32バイナリパッ ケージのDLLフォルダから fdftk.dll を 使用するWindowsマシンのSYSTEM32フォルダ (例: C:\WINNT\SYSTEM32または C:\WINDOWS\SYSTEM32) へコピーする必要があります。
この拡張モジュールは設定ディレクティブを全く 定義しません。
多くのfdf関数は、最初のパラメータとして fdf リソースを必要とします。 fdf リソースは、オープンしたfdfファイル のハンドルです。 fdf リソースは、 fdf_create() 、 fdf_open() 、 fdf_open_string() を用いて取得することも可能 です。
これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。
以下の例でフォームデータの評価に関して説明します。
例 1FDF ドキュメントの評価