説明
FDFファイルを AFormAut オブジェクトにインポートする。同時にAVDocでオープンしたPDFに結合されます。但し、保存はPDDocオブジェクトで行います。

形式
void ImportAnFDF ( LPCTSTR bstrFullPath ) ;
引数
- 第一引数 ( LPCTSTR bstrFullPath ) :
入力するFDF ファイルのフルパス名。
戻り値
- 無し。
動作するバージョン
| 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 | OK | 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
サンプル:Excel のVBA
FDFファイルからフォームフィールドのデータを入力してPDF ファイルと結合出力します。
- 事前に 参照設定(AFormAutの追加版) が必要です。
- F8 キーでステップ実行しながら動作確認します。
001 Option Explicit
002
003 Public Const PDSaveFull = &H1
004 Public Const PDSaveLinearized = &H4
005 Public Const PDSaveCollectGarbage = &H20
006
007 Sub AFormAut_ImportAnFDF_test()
008
009 Dim lRet As Long
010
011 Const CON_PDF_FILE = "D:\work\VBJavaScript.pdf"
012 Const CON_PDF_FI_S = "D:\work\VBJavaScript-S.pdf"
013 Const CON_FDF_FILE = "D:\work\VBJavaScript.fdf"
014
015 'Acrobatオブジェクトの定義&作成
016 Dim objAcroApp As New Acrobat.AcroApp
017 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
018 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
019
020 Dim objAFormApp As AFORMAUTLib.AFormApp
021 Dim objAFormFields As AFORMAUTLib.Fields
022
023 '※CreateObject("AFormAut.App")のエラー
024 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
025 '※回避用 / メモリにAcrobatを強制ロードさせる
026 objAcroApp.CloseAllDocs
027
028 '*―――――――――――――――――――--
029 '* PDFファイルを開く
030
031 '処理対象のPDFファイルを開く
032 '※AVDocでOpenしないと"AFormAut.App"で実行エラー
033 lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
034 If lRet = 0 Then
035 MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
036 CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
037 GoTo Skip_AFormAut_ImportAnFDF_test:
038 End If
039
040 '*―――――――――――――――――――--
041 '* AFormオブジェクトの作成
042
043 Set objAFormApp = CreateObject("AFormAut.App")
044 Set objAFormFields = objAFormApp.Fields
045
046 '*―――――――――――――――――――--
047 '* FDFをインポート
048
049 objAFormFields.ImportAnFDF CON_FDF_FILE
050
051 '別のFDFを連続でインポートする場合は
052 'objAFormFields.ImportAnFDF CON_FDF_FILE2
053
054 Skip_AFormAut_ImportAnFDF_test:
055
056 '*―――――――――――――――――――--
057 '* 終了処理
058
059 '結合したPDFファイルの保存はPDDoc.Saveで必ず行う
060 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
061 lRet = objAcroPDDoc.Save( _
062 PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
063 CON_PDF_FI_S)
064 If lRet = 0 Then
065 MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
066 CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
067 End If
068
069 'AVDocを閉じる
070 lRet = objAcroAVDoc.Close(1)
071
072 'Acrobatアプリケーションの終了
073 objAcroApp.Hide
074 objAcroApp.Exit
075
076 'オブジェクトの開放
077 Set objAFormFields = Nothing
078 Set objAFormApp = Nothing
079 Set objAcroAVDoc = Nothing
080 Set objAcroApp = Nothing
081
082 MsgBox "End Sub"
083
084 End Sub
085
実行結果
1. Acrobat 7.1.4
- Acrobat 7 で作成したフォームデータのFDFファイルをインポート時 :
全てのフィールドが正常にインポートされた。

- Acrobat 7 で作成した注釈データのFDFファイルをインポート時 :
全ての注釈が正常にインポートされた。

- Acrobat 7 で作成したフォームデータのFDFファイルと
Acrobat 7 で作成した注釈データのFDFファイルを同時にインポート時 :
全てのフィールドと注釈が正常にインポートされた。

2. Acrobat X (10.1.8)
Acrobat 7.1.4 と結果は同じ。
3. Acrobat XI (11.0.5)
Acrobat 7.1.4 と結果は同じ。
備考
- 複数のFDFを結合する場合は連続でImportAnFDF メソッドを実行します。
- 結合したPDFはPDoc.Save メソッドで保存します。AVDoc.Close メソッドで保存しようとするとダイアログ画面が表示されてしまうからです。
注意事項
- Acrobat 7 環境下でAVDoc.Close でPDFファイルの保存をしてはダメです。
lRet = objAcroAVDoc.Close(0)
OLE(IAC)が処理出来なくなり、以下のメッセージを出して終了出来なくなります。
Microsoft Excel 別のプログラムでOLEの操作が完了するまで待機を続けます。
Adobe Web 解説
OLE Automation / AFormAut / ImportAnFDF (公式サイト・英語)
< 戻る >