PHP マニュアル
前のページ |  | 次のページ

# XXXII. Forms Data Format 関数

# 導入

Forms Data Format (FDF)は、PDFドキュメント内部のフォームを処理する ためのフォーマットです。FDFの詳細および一般的な用途については、 http://partners.adobe.com/asn/acrobat/forms.jspにあるドキュメン トを参照下さい。

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/acrobat/forms.jspから取得可能な 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リソースは、 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)

# 例

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

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

`<?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);
?>`

前のページ | ホーム | 次のページ
unlink | 上に戻る | fdf_add_doc_javascript