AFormAut : ExportAsFDF メソッド

TOP > AFormAut > ExportAsFDF メソッド


説明

PDFファイルからフォームフィールドのデータを抽出して、

FDF ファイル(FDF ファイル形式)としてファイル出力します。

※注釈データは抽出しない。

     

 

形式

void ExportAsFDF (
     LPCTSTR bstrFullPath,
     LPCTSTR bstrSubmitButton,
     BOOL bEmptyFields,
     const VARIANT& arrFields);

 

引数

  1. 第一引数 ( LPCTSTR bstrFullPath ) :
    作成するFDF ファイルのフルパス名。
    セーフパスにしたがって設定する必要は無い。 ★テスト済み 
       
  2. 第二引数 ( LPCTSTR bstrSubmitButton ) :
    Button型の既存のフォームフィールドの名前。
    省略(空文字)も可。 
    ※これに関する英語原文の内容がココ
        
  3. 第三引数 ( BOOL bEmptyFields ) :
    True : 値の持たないフィールドもFDFファイルの作成時に含める
    False : 含めない
       
  4. 第四引数 ( const VARIANT& arrFields ) :
    FDFファイルに含めるフィールドの完全修飾名を表す文字列の配列。
    この配列に、全ての子のフィールドがFDFファイルに含まれるようにするには、
    非終端フィールド「. ピリオド」の名前が含まれている必要が有ります。
    オプションなので省略可能。
    例:サブツリー全体を簡単に書き出す方法が指定出来ます。 arrFields パラメータの一部として「name」を入れると、「name.title」、「name.first」、「name.middle」、「name.last」などのフィールドが書き出されます。

       

 

戻り値

  • 無し。
    ※引数にエラーが有ると、どうなる?

 

  

動作するバージョン

Adobe
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 ファイルとして出力する。

   

 

Option Explicit

Sub AFormAut_ExportAsFDF_test()

    Dim arrFields(1)    As String
    Dim lRet            As Long
    
    Const CON_PDF_FILE = "D:¥work¥VBJavaScript.pdf"
    Const CON_FDF_FILE = "D:¥work¥VBJavaScript-IAC.fdf"
    
    'Acrobatオブジェクトの定義&作成
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
     
    Dim objAFormApp     As AFORMAUTLib.AFormApp
    Dim objAFormFields  As AFORMAUTLib.Fields
    
    '※CreateObject("AFormAut.App")のエラー
    '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
    '※回避用 / メモリにAcrobatを強制ロードさせる
    objAcroApp.CloseAllDocs
    
    '*―――――――――――――――――――--
    '* PDFファイルを開く
    
    '処理対象のPDFファイルを開く
    '※AVDocでOpenしないと"AFormAut.App"で実行エラー
    lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
    If lRet = 0 Then
        MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
            CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
        GoTo Skip_AFormAut_ExportAsFDF_test:
    End If
    
    '*―――――――――――――――――――--
    '* AFormオブジェクトの作成
    
    Set objAFormApp = CreateObject("AFormAut.App")
    Set objAFormFields = objAFormApp.Fields
    
    '*―――――――――――――――――――--
    '* FDFの作成
    
    arrFields(0) = "Text1"
    arrFields(1) = "Text2"
    
    objAFormFields.ExportAsFDF CON_FDF_FILE, "", True, arrFields
    
Skip_AFormAut_ExportAsFDF_test:

    '*―――――――――――――――――――--
    '* 終了処理
    
    '変更しないで閉じます
    lRet = objAcroAVDoc.Close(1)
    
    'Acrobatアプリケーションの終了
    objAcroApp.Hide
    objAcroApp.Exit
    
    'オブジェクトの開放
    Set objAFormFields = Nothing
    Set objAFormApp = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing
    
    MsgBox "End Sub "

End Sub

 

 

 


テスト結果 詳細

  

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との結合に使える。

 

 

備考

  1. 注釈データは抽出されない。

 

Adobe Web 解説 URL(英語)

 

戻る

 


管理者のメモ

  

これ以降は管理者のメモです。

見なくても結構です。

 

  1. Acrobat本体で作成するFDFファイルには元のPDFファイル(マスターPDF)が存在するフルパス情報が存在します。
    しかし、ここのメソッドで作成されるFDFファイルに関してはフルパスでは無く、ファイル名の情報しか保存されません。
  2. FDFファイル内に定義されたマスターPDFファイルとしかFDFファイルは結合できない。
    無理やり結合しようとしても「」エラーが表示される。 
  3. Acrobat JavaScript 「ExportAsFDF 」の実行も考えたが、セキュリティ上の問題でIACからは実行できない。
  4. Acrobat X(10)からFDFファイルの出力は
    Acrobat X 「フォームデータを指定形式で書き出し」

 

FDF とは

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

 

戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れるとエラーになる場合が有ります。その時はコードの前後に <code> ・・・</code> タグを入れてください。

This site uses Akismet to reduce spam. Learn how your comment data is processed.