説明
PDFファイルからフォームフィールドのデータを抽出して、FDF ファイル(FDF ファイル形式)としてファイル出力します。
※注釈データは抽出しない。

形式
void ExportAsFDF (
LPCTSTR bstrFullPath,
LPCTSTR bstrSubmitButton,
BOOL bEmptyFields,
const VARIANT& arrFields);
引数
- 第一引数 ( LPCTSTR bstrFullPath ) :
作成するFDF ファイルのフルパス名。セーフパスにしたがって設定する必要は無い。 ★テスト済み
- 第二引数 ( LPCTSTR bstrSubmitButton ) :
Button型の既存のフォームフィールドの名前。省略(空文字)も可。
- 第三引数 ( BOOL bEmptyFields ) :
True : 値の持たないフィールドもFDFファイルの作成時に含める
False : 含めない
- 第四引数 ( const VARIANT& arrFields ) :
FDFファイルに含めるフィールドの完全修飾名を表す文字列の配列。
この配列に全ての子のフィールドがFDFファイルに含まれるようにするには非終端フィールド「. ピリオド」の名前が含まれている必要が有ります。オプションなので省略可能。
例:サブツリー全体を簡単に書き出す方法が指定出来ます。 arrFields パラメータの一部として「name」を入れると、「name.title」、「name.first」、「name.middle」、「name.last」などのフィールドが書き出されます。
戻り値
- 無し。 ※引数にエラーが有ると、どうなる?
動作するバージョン
| Acrobat | 動作 | 備考 |
|---|---|---|
| 4 | NO | Acrobat 4.0 ※Windows 98SE + Excel 2000 *1 ※古いPDFのバージョンはOK! |
| 5 | NO | Acrobat 5.0.5 + Excel 2003 *1 ※古いPDFのバージョンはOK |
| 6 | NO | Acrobat 6.0.6 Pro + Excel 2003 *1 ※古いPDFのバージョンはOK |
| 7 | X | Acrobat 7.1.4 Pro + Excel 2003 *2 ※レジストリ操作で全面的に可能になる |
| 8 | NO | Acrobat 8.3.1 Pro + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
| 9 | NO | Acrobat 9.5.5 Extended + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
| 10 | OK | Acrobat X (10.1.8) Extended + Excel 2003 |
| 11 | OK | Acrobat XI (11.0.5) Extended + Excel 2003 |
- OK : 正常処理。
- NO : 動作しない。 又は実行時にエラーになります。
- *1 : 「PDF のバージョン」によっては正常処理出来ない場合があります。
- *2 : 処理前のレジストリに以下を追加する必要があります。
[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert]
[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert¥cCheckbox]
"idocNewerVersionWarning"=dword:00000001 - X : フォームフィールドのデータは抽出されない。
FDFファイルファイルは作られて、正常終了はする。 - - : 動作未確認。 ですが、タブン動作します。
サンプル:Excel のVBA
PDFドキュメントからフォームフィールドのデータを抽出して、FDF ファイルとして出力します。
- F8 キーでステップ実行しながら動作確認します。
- 事前に 参照設定(AFormAutの追加版) が必要です。
001 Option Explicit
002
003 Sub AFormAut_ExportAsFDF_test()
004
005 Dim arrFields(1) As String
006 Dim lRet As Long
007
008 Const CON_PDF_FILE = "D:\work\VBJavaScript.pdf"
009 Const CON_FDF_FILE = "D:\work\VBJavaScript-IAC.fdf"
010
011 'Acrobatオブジェクトの定義&作成
012 Dim objAcroApp As New Acrobat.AcroApp
013 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
014
015 Dim objAFormApp As AFORMAUTLib.AFormApp
016 Dim objAFormFields As AFORMAUTLib.Fields
017
018 '※CreateObject("AFormAut.App")のエラー
019 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
020 '※回避用 / メモリにAcrobatを強制ロードさせる
021 objAcroApp.CloseAllDocs
022
023 '*―――――――――――――――――――--
024 '* PDFファイルを開く
025
026 '処理対象のPDFファイルを開く
027 '※AVDocでOpenしないと"AFormAut.App"で実行エラー
028 lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
029 If lRet = 0 Then
030 MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
031 CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
032 GoTo Skip_AFormAut_ExportAsFDF_test:
033 End If
034
035 '*―――――――――――――――――――--
036 '* AFormオブジェクトの作成
037
038 Set objAFormApp = CreateObject("AFormAut.App")
039 Set objAFormFields = objAFormApp.Fields
040
041 '*―――――――――――――――――――--
042 '* FDFの作成
043
044 arrFields(0) = "Text1"
045 arrFields(1) = "Text2"
046
047 objAFormFields.ExportAsFDF CON_FDF_FILE, "", True, arrFields
048
049 Skip_AFormAut_ExportAsFDF_test:
050
051 '*―――――――――――――――――――--
052 '* 終了処理
053
054 '変更しないで閉じます
055 lRet = objAcroAVDoc.Close(1)
056
057 'Acrobatアプリケーションの終了
058 objAcroApp.Hide
059 objAcroApp.Exit
060
061 'オブジェクトの開放
062 Set objAFormFields = Nothing
063 Set objAFormApp = Nothing
064 Set objAcroAVDoc = Nothing
065 Set objAcroApp = Nothing
066
067 MsgBox "End Sub "
068
069 End Sub
070
テスト結果 詳細
1. Acrobat 7(7.1.4) 環境下でExcel VBA を実行
- 正常終了するがマスターPDFのファイル名のデータしか抽出されない。
※Acrobat 7.1.4アプリ本体での操作について
- Acrobat アプリ本体ではフィールドと注釈のFDF出力は別々のメニューから行ないます。
- 注釈用FDF出力時はPDFファイル名に拡張子「.fdf」 で出力します。
- フォームフィールド用FDF出力時はPDFファイル名+「_data」に拡張子「.fdf」 で出力します。
2. Acrobat X(10.1.8) 環境下でExcel VBA を実行
- フィールド
- FDF出力の正常処理。
- フィールドのサブツリー指定のFDF出力正常。
- 注釈(ハイライト、テキスト注釈、テキスト置換等)
- FDF出力されない。
- マスターPDFの情報はファイル名のみがFDFへ出力される。
- Acrobatアプリの操作と違ってフルパス情報では出力されない。
※Acrobat X(10.1.8) アプリ本体での操作について
- Acrobat アプリ本体ではフィールドと注釈のFDF出力は別々のメニューから行ないます。
- フィールドと注釈は別々のFDF出力で出力されるが、PDFとの結合では2つ一緒に使えます。
3. Acrobat X(11.0.5) 環境下でExcel VBA を実行
- フィールド
- FDF出力の正常処理。
- フィールドのサブツリー指定のFDF出力正常。
- 注釈(ハイライト、テキスト注釈、テキスト置換等)
- FDF出力されない。
- マスターPDFの情報はファイル名のみがFDFへ出力される。
- Acrobatアプリの操作と違ってフルパス情報では出力されない。
※Acrobat XI(11.0.5) アプリ本体での操作について
- Acrobat アプリ本体では注釈はFDF出力を別々のメニューから行ないます。
- フィールドの出力はメニューから消えている?
- 注釈のFDF出力でPDFとの結合に使えます。
備考
- 注釈データは抽出されない。
Adobe Web 解説
OLE Automation / AFormAut / ExportAsFDF (公式サイト・英語)
< 戻る >
サイト管理人の技術メモ
これ以降はサイト管理者が当サイト又は当ページを維持&管理するためのメモです。見る必要も無く公開用にも書いてません。
- Acrobat本体で作成するFDFファイルには元のPDFファイル(マスターPDF)が存在するフルパス情報が存在します。しかし、ここのメソッドで作成されるFDFファイルに関してはフルパスでは無く、ファイル名の情報しか保存されません。
- FDFファイル内に定義されたマスターPDFファイルとしかFDFファイルは結合できない。無理やり結合しようとしても「」エラーが表示される。※
- Acrobat JavaScript 「ExportAsFDF 」の実行も考えたが、セキュリティ上の問題でIACからは実行できない。
- Acrobat X(10)からFDFファイルの出力は

FDF とは
- FDF (エフディーエフ:Form Data Formatの略称)。
- PDF本体からフォームや注釈の内容をファイルとして書き出す時のファイル形式です。
- 複数の注釈をひとつのPDFに取り込めることが出来る。
- FDFファイルはテキスト情報だけなので非常にサイズが小さい。
- FDFファイルには元のPDFファイル(マスターPDF)の存在情報も有るので、
FDFを起動すると該当するPDFファイルが開き、
FDFファイルの情報が反映されて表示される。 - メール等でやりとりする時に軽量サイズなので便利です。
- 拡張子は.fdf .FDF。
- フォームデータ形式をFDFとも言う。
※XFDF ファイル(XML ベースの FDF ファイル)
< 戻る >