AFormAut : SetResetFormAction メソッド

TOP > AFormAut > SetResetFormAction メソッド


説明

PDF 上の全てのフィールド、又は指定フィールドをリセットします。

以下の Acrobat ボタンのリセット・アクションを設定したのと同じことを行います。

AFormAut : SetResetFormAction メソッド

形式

void  SetResetFormAction  (
        LPCTSTR  bstrTrigger ,
        long  theFlags ,
        const  VARIANT&  arrFields ) ;

引数

  1. 第一引数 ( LPCTSTR  bstrTrigger ) :
    リセット・アクションのトリガを以下の文字列で指定します。 
    • up : マウスボタンを放す
    • down : マウスボタンを押す
    • enter : マウス・ポインタを範囲内に入れる
    • exit : マウス・ポインタを範囲外に出す  
  2. 第二引数 ( long  theFlags ) :
    0 : リセット対象のフィールド を第三引数に指定します。
    0以外 : リセット対象以外のフィールド を第三引数に指定します。 
     
  3. 第三引数 ( const  VARIANT&  arrFields ) :
    フィールド名を文字列で配列に入れて指定します。
    配列なので複数のフィールド名が指定できます。
    フィールド名は完全修飾名の形「aaa.xxx」、又は複数の子を持つ表現「bbb」を有する場合はそれらのすべてが対象になります。
    複数のフィールドが同じ名前を持っている場合は、すべてが対象になります。
    存在しないフィールド名は無視され、エラーにはなりません。
    省略時は全てのフィールドが対象になります。

戻り値

  • 無し。

動作するバージョン

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 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 : 全ての「PDF のバージョン」での処理を可能にしたければ、
    処理前のレジストリに以下を追加する必要があります。
    [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

説明 : PDF上の指定フィールドのみをリセットするボタンを作成します。

AFormAut : SetResetFormAction メソッド リセット・ボタンを作成
001 Option Explicit 002 003 Public Const PDSaveFull = &H1 004 Public Const PDSaveLinearized = &H4 005 Public Const PDSaveCollectGarbage = &H20 006 007 Sub AFormAut_SetResetFormAction_test() 008 009 Const CON_PDF_FILE = "D:\work\ReleaseNotes.pdf" 010 Const CON_PDF_FI_S = "D:\work\ReleaseNotes-S.pdf" 011 012 Dim lRet As Long 013 Dim strField(1) As String 014 015 'Acrobatオブジェクトの定義&作成 016 Dim objAcroApp As New Acrobat.AcroApp 017 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 018 Dim objAcroPDDoc As Acrobat.AcroPDDoc 019 Dim objAcroPDPage As Acrobat.AcroPDPage 020 Dim objAcroPoint As Acrobat.AcroPoint 021 022 Dim objAFormApp As AFORMAUTLib.AFormApp 023 Dim objAFormFields As AFORMAUTLib.Fields 024 Dim objAFormField As AFORMAUTLib.Field 025 026 '※CreateObject("AFormAut.App")のエラー 027 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。] 028 '※回避用 / メモリにAcrobatを強制ロードさせる 029 objAcroApp.CloseAllDocs 030 031 '*―――――――――――――――――――-- 032 '* PDFファイルを開く 033 034 '処理対象のPDFファイルを開く 035 '※AVDocでOpenしないと"AFormAut.App"で実行エラー 036 lRet = objAcroAVDoc.Open(CON_PDF_FILE, "") 037 If lRet = 0 Then 038 MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _ 039 CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー" 040 GoTo Skip_AFormAut_SetResetFormAction_test: 041 End If 042 043 'PDFページサイズを取得 044 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc 045 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0) 046 Set objAcroPoint = objAcroPDPage.GetSize 047 048 '*―――――――――――――――――――-- 049 '* AFormオブジェクトの作成 050 051 Set objAFormApp = CreateObject("AFormAut.App") 052 Set objAFormFields = objAFormApp.Fields 053 054 '*―――――――――――――――――――-- 055 '* 印刷ボタンを追加 頁右上に配置 056 057 Set objAFormField = objAFormFields.Add( _ 058 "Reset Button", "button", 0, _ 059 50, objAcroPoint.y - 20, 150, objAcroPoint.y - 60) 060 061 strField(0) = "Text1" 062 strField(1) = "Text2.sonota" '無いので無視される 063 064 With objAFormField 065 ' 'フォントサイズ 066 ' .TextSize = 20 067 ' 'ボタンのスタイル 068 .BorderStyle = "beveled" '浮き出し 069 ' 'ボタンのキャプション 070 .SetButtonCaption "N", "Reset" 071 ' '背景色 072 ' ' ※http://pdf-file.nnn2.com/?p=145 073 .SetBackgroundColor "G", 0.85, 0.85, 0, 0 074 .Highlight = "push" 075 'リセットボタンを作成 076 '.SetResetFormAction "up", 0 077 .SetResetFormAction "up", 0, strField 078 End With 079 080 '設定後に開放 081 Set objAFormField = Nothing 082 083 Skip_AFormAut_SetResetFormAction_test: 084 085 '*―――――――――――――――――――-- 086 '* 終了処理 087 088 '変更したPDFファイルの保存はPDDoc.Saveで必ず行う 089 lRet = objAcroPDDoc.Save( _ 090 PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _ 091 CON_PDF_FI_S) 092 If lRet = 0 Then 093 MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _ 094 CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー" 095 End If 096 097 'AVDocを閉じる 098 lRet = objAcroAVDoc.Close(1) 099 100 'Acrobatアプリケーションの終了 101 objAcroApp.Hide 102 objAcroApp.Exit 103 104 'オブジェクトの開放 105 Set objAFormFields = Nothing 106 Set objAFormApp = Nothing 107 Set objAcroAVDoc = Nothing 108 Set objAcroPDDoc = Nothing 109 Set objAcroPDPage = Nothing 110 Set objAcroPoint = Nothing 111 Set objAcroApp = Nothing 112 113 MsgBox "End Sub" 114 115 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 


実行結果

1. Acrobat 7.1.4

  • リセット・ボタンの実行前
      
    AFormAut : SetResetFormAction メソッド 実行前

     
  • リセット・ボタンの実行後
    一番上の Text1.name フィールド名がリセットされた。
      
    AFormAut : SetResetFormAction メソッド 実行後
     
     
  • 第二引数を 1 にすると、
    フィールドの2番目、3番目がリセットされます。
      
    AFormAut : SetResetFormAction メソッド 実行後(2)

2. Acrobat X (10.1.8)

Acrobat 7.1.4 と結果は同じ。

3. Acrobat XI (11.0.5)

Acrobat 7.1.4 と結果は同じ。

備考

  1. Acrobat JavaScript ( Acrobat 7.0 ) に相当する命令が resetForm です。

Adobe Web 解説 URL(英語)

  • http://livedocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?href=IAC_API_FormsIntro.107.15.html&accessible=true 
      
  • http://partners.adobe.com/public/developer/en/acrobat/sdk/FormsAPIReference.pdf#nameddest=G14.1040517

その他の参考URL

  1. 【制限事項】Acrobat Forms API / OLE オートメーションメソッドの日本語対応について 
    http://kb2.adobe.com/jp/cps/511/511285.html   
      
  2. サンプル(英語) 
    http://www.vbforums.com/showthread.php?113838-Please-help-me-with-this-PDF-qeustion
     

戻る

コメントを残す

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

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください