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

# XXXVII. 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` および `F` で、`Fields` は 一連の入力フィールドを指し、`F` は このデータが属する PDF ドキュメントのファイル名を保持します。 これらのエントリは、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` といった配置のディレクトリ構造をともに サポートします。このため、配布ファイルを展開したディレクトリにそのまま おいておくか、あるいは `/usr/local/include` および `/usr/local/lib` のように使用するプラットフォームに 応じた適当なディレクトリに移動して `--with-fdftk=/usr/local` を指定して 設定することが可能です。

> 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
// 拡張モジュールが提供する入力文字列から fdf をオープンします。
// pdf フォームには volume, date, comment, publisher, preparer
// という名前のテキスト入力フィールドと 2 つのチェックボックス
// show_publisher および show_preparer があるものとします。
$fdf = fdf_open_string($HTTP_FDF_DATA);
$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);
?>`

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