XXXIForms Data Format 関数
Forms Data Format (FDF)は、PDFドキュメント内部のフォームを処理する
ためのフォーマットです。FDFの詳細および一般的な用途については、
http://partners.adobe.com/asn/developer/acrosdk/forms.htmlにあるドキュメン
トを参照下さい。
注意
fdftk サポートを有効にして php の configure を行う際に問題を発生
した場合、ヘッダーファイル FdfTk.h およびライブラリ libFdfTk.so
が正しい場所にあるかどうかを確認して下さい。これらは、それぞれ
fdftk-dir/include および fdftk-dir/lib にある必要があります。
FdfTk の配布ファイルを単に解凍しただけだとしたら、このように
はなりません。
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()
等で修整可能です。
以下の例でフォームデータの評価に関して説明します。
例 1FDF ドキュメントの評価 <?php
// FDF データをテンポラリファイルに保存します。
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);
// テンポラリファイルをオープンし、データを評価します。
// PDF フォームは、volume, date, comment, publisher, preparer という名前の
//テキスト入力フィールドと show_publisher および show_preparer
// というチェックボックスを有します。
$fdf = fdf_open("test.fdf");
$volume = fdf_get_value($fdf, "volume");
echo "volume フィールドは次の値を有します。 '<B>$volume</B>'<BR>";
$date = fdf_get_value($fdf, "date");
echo "date フィールドは次の値を有します。 '<B>$date</B>'<BR>";
$comment = fdf_get_value($fdf, "comment");
echo "comment フィールドは次の値を有します。 '<B>$comment</B>'<BR>";
if(fdf_get_value($fdf, "show_publisher") == "On") {
$publisher = fdf_get_value($fdf, "publisher");
echo "publisher フィールドは次の値を有します。 '<B>$publisher</B>'<BR>";
} else
echo "publisher は、表示されません。<BR>";
if(fdf_get_value($fdf, "show_preparer") == "On") {
$preparer = fdf_get_value($fdf, "preparer");
echo "preparer フィールドは次の値を有します。 '<B>$preparer</B>'<BR>";
} else
echo "preparer は、表示されません。<BR>";
fdf_close($fdf);
?> |
|