XXXIForms Data Format 関数

導入

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/includeDIR/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リソースは、 fdf_create()fdf_open()fdf_open_string() を用いて取得することも可能 です。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

FDFValue (integer)

FDFStatus (integer)

FDFFile (integer)

FDFID (integer)

FDFFf (integer)

FDFSetFf (integer)

FDFClearFf (integer)

FDFFlags (integer)

FDFSetF (integer)

FDFClrF (integer)

FDFAP (integer)

FDFAS (integer)

FDFAction (integer)

FDFAA (integer)

FDFAPRef (integer)

FDFIF (integer)

FDFEnter (integer)

FDFExit (integer)

FDFDown (integer)

FDFUp (integer)

FDFFormat (integer)

FDFValidate (integer)

FDFKeystroke (integer)

FDFCalculate (integer)

FDFNormalAP (integer)

FDFRolloverAP (integer)

FDFDownAP (integer)

以下の例でフォームデータの評価に関して説明します。

例 1FDF ドキュメントの評価

<?php
// Open fdf from input string provided by the extension
// The pdf form contained several input text fields with the names
// volume, date, comment, publisher, preparer, and two checkboxes
// show_publisher and show_preparer.
$fdf = fdf_open_string($HTTP_FDF_DATA);
$volume = fdf_get_value($fdf, "volume");
echo "The volume field has the value '<B>$volume</B>'<BR>";

$date = fdf_get_value($fdf, "date");
echo "The date field has the value '<B>$date</B>'<BR>";

$comment = fdf_get_value($fdf, "comment");
echo "The comment field has the value '<B>$comment</B>'<BR>";

if(fdf_get_value($fdf, "show_publisher") == "On") {
  $publisher = fdf_get_value($fdf, "publisher");
  echo "The publisher field has the value '<B>$publisher</B>'<BR>";
} else
  echo "Publisher shall not be shown.<BR>";

if(fdf_get_value($fdf, "show_preparer") == "On") {
  $preparer = fdf_get_value($fdf, "preparer");
  echo "The preparer field has the value '<B>$preparer</B>'<BR>";
} else
  echo "Preparer shall not be shown.<BR>";
fdf_close($fdf);
?>

目次
fdf_add_doc_javascript -- Adds javascript code to the FDF document
fdf_add_template -- テンプレートをFDFに追加する
fdf_close -- FDF ドキュメントを閉じる
fdf_create -- 新規 FDF ドキュメントを作成する
fdf_errno -- Return error code for last fdf operation
fdf_error -- Return error description for fdf error code
fdf_get_ap -- Get the appearance of a field
fdf_get_attachment -- Extracts uploaded file embedded in the FDF
fdf_get_encoding -- Get the value of the /Encoding key
fdf_get_file -- /F キーの値を得る
fdf_get_status -- /STATUS キーの値を得る
fdf_get_value -- フィールドの値を得る
fdf_get_version -- Gets version number for FDF api or file
fdf_header -- FDF 固有の出力ヘッダをセットする
fdf_next_field_name -- 次のフィールド名を得る
fdf_open_string -- Read a FDF document from a string
fdf_open -- FDF ドキュメントをオープンする
fdf_save_string -- Returns the FDF document as a string
fdf_save -- FDF ドキュメントを保存する
fdf_set_ap -- フィールドの外観を設定する
fdf_set_encoding -- FDF文字エンコーディング
fdf_set_file -- /F キーの値を設定する
fdf_set_flags -- フィールドのフラグを設定する
fdf_set_javascript_action -- フィールドの javascript アクションを設定する
fdf_set_opt -- フィールドのオプションを設定する
fdf_set_status -- /STATUS キーの値を設定する
fdf_set_submit_form_action -- フィールドのjavascriptアクションを設定する
fdf_set_target_frame -- Set target frame for form display
fdf_set_value -- フィールドの値を設定する
fdf_set_version -- Sets version number for a FDF file