TOP > AFormAut > SetSubmitFormAction メソッド
説明
指定した URL にフィールドの値を送信します。
形式
void SetSubmitFormAction (
LPCTSTR bstrTrigger ,
LPCTSTR bstrTheURL ,
long theFlags ,
const VARIANT& arrFields ) ;
引数
- 第一引数 ( LPCTSTR bstrTrigger ) :
リセット・アクションのトリガを以下の文字列で指定します。- up : マウスボタンを放す
- down : マウスボタンを押す
- enter : マウス・ポインタを範囲内に入れる
- exit : マウス・ポインタを範囲外に出す
- 第二引数 ( LPCTSTR bstrTheURL ) :
送信先 URL の文字列。
- 第三引数 ( long theFlags ) :
送信時の内容や形式等を数値で指示します。
詳細はPDF リファレンスのセクション 8.6 を参照してください。
↑ とSDK に説明が有りますが、該当する説明は見つけられませんでした。
以下はテストでの結果です。- 0 : 書き出しはFDF,選択したフィールドのみ
- 1 : 書き出しはFDF,全てのフィールド
- 2 : 書き出しはFDF,選択したフィールドのみ,空白のフィールドを含める
- 4 : 書き出しはHTML,選択したフィールドのみ
- 5 : 書き出しはHTML,全てのフィールド
- 6 : 書き出しはHTML,選択したフィールドのみ,空白のフィールドを含める
- 第四引数 ( const VARIANT& arrFields ) :
フィールド名を文字列で配列に入れて指定します。
配列なので複数のフィールド名が指定できます。
存在しないフィールド名は無視され、エラーにはなりません。
省略時は全てのフィールドが対象になります。
フィールド名は完全修飾名の形「aaa.xxx」で指定します。
複数の子を持つ表現 「aaa.xx」、「aaa.yy」を「aa」で一括指定できます。
↑ とSDK に書かれていますが、テスト結果ではフィールド名は完全修飾のフル名称で指定しないと対象になりません。
戻り値
- 無し。
動作するバージョン
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上の指定フィールドを指定URLへ送信するSubmit ボタンを作成します。
- F8 キーでステップ実行しながら動作確認します。
- 事前に 参照設定(AFormAutの追加版) が必要です。
001 Option Explicit
002
003 Public Const PDSaveFull = &H1
004 Public Const PDSaveLinearized = &H4
005 Public Const PDSaveCollectGarbage = &H20
006
007 Sub AFormAut_SetSubmitFormAction_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_SetSubmitFormAction_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 "Submit Button", "button", 0, _
059 50, objAcroPoint.y - 20, 150, objAcroPoint.y - 60)
060
061 'フィールド名はフル名称で指定
062 strField(0) = "Text1.name"
063 strField(1) = "Text2.sonota" '無いので無視される
064
065 With objAFormField
066 'フォントサイズ
067 .TextSize = 20
068 'ボタンのスタイル
069 .BorderStyle = "beveled" '浮き出し
070 'ボタンのキャプション
071 .SetButtonCaption "N", "Submit"
072 '背景色
073 ' ※https://pdf-file.nnn2.com/?p=145
074 .SetBackgroundColor "G", 0.85, 0.85, 0, 0
075 .Highlight = "push"
076 ' Submit ボタンの作成
077 .SetSubmitFormAction _
078 "up", "http://localhost:10410/test-html.php", 0, strField
079 End With
080
081 '設定後に開放
082 Set objAFormField = Nothing
083
084 Skip_AFormAut_SetSubmitFormAction_test:
085
086 '*―――――――――――――――――――--
087 '* 終了処理
088
089 '変更したPDFファイルの保存はPDDoc.Saveで必ず行う
090 lRet = objAcroPDDoc.Save( _
091 PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
092 CON_PDF_FI_S)
093 If lRet = 0 Then
094 MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
095 CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
096 End If
097
098 'AVDocを閉じる
099 lRet = objAcroAVDoc.Close(1)
100
101 'Acrobatアプリケーションの終了
102 objAcroApp.Hide
103 objAcroApp.Exit
104
105 'オブジェクトの開放
106 Set objAFormFields = Nothing
107 Set objAFormApp = Nothing
108 Set objAcroAVDoc = Nothing
109 Set objAcroPDDoc = Nothing
110 Set objAcroPDPage = Nothing
111 Set objAcroPoint = Nothing
112 Set objAcroApp = Nothing
113
114 MsgBox "End Sub"
115
116 End Sub
117
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
1. Acrobat 7.1.4
- 第三引数 ( long theFlags ) の使える値は0,1,2,4,5,6 。
- 第四引数 ( const VARIANT& arrFields ) 指定時はフル名称で記述しないと、フィールド名が対象にならない。
- Submit ボタンの実行後
2. Acrobat X (10.1.8)
Acrobat 7.1.4 と結果は同じ。
3. Acrobat XI (11.0.5)
Acrobat 7.1.4 と結果は同じ。
備考
- Acrobat JavaScript ( Acrobat 7.0 ) に似た命令が submitForm です。
- HTML の Submit ボタンと似たような働きと思ってますが。
この後の作成ボタンの動作検証では、確認が出来ませんでした。
Adobe Web 解説 URL(英語)
http://livedocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?href=IAC_API_FormsIntro.107.16.html&accessible=true
http://partners.adobe.com/public/developer/en/acrobat/sdk/FormsAPIReference.pdf#nameddest=G14.1031179
その他の参考URL
- 簡単なサンプルが有る英語サイトは有りましたが、
参考になるようなURLは存在しませんでした。
< 戻る >
サイト管理者のメモ
コレ以降はサイト管理者のメモです。
見なくても結構です。
1. 第三引数 ( long theFlags ) の値を変化させたボタン・プロパティのテスト結果
- 0 : 0000 FDF,選択したフィールド
- 1 : 0001 FDF,全てのフィールド
- 2 : 0010 FDF,選択したフィールド,空白のフィールドを含める
- 3 : 0011 * FDF,全てのフィールド
- 4 : 0100 HTML,選択したフィールド
- 5 : 0101 HTML,全てのフィールド
- 6 : 0110 HTML,選択したフィールド,空白のフィールドを含める
- 7 : 0111 * HTML,全てのフィールド
- 8 : 1000 * FDF,選択したフィールド
- 9 : 1001 * FDF,全てのフィールド
- 10 : 1010 * FDF,選択したフィールド,空白のフィールドを含める
- 11 : 1011 * FDF,全てのフィールド
- 12 : 1100 * HTML,選択したフィールド
- 13 : 1101 * HTML,全てのフィールド
- 14 : 1110 * HTML,選択したフィールド,空白のフィールドを含める
- 15 : 1111 * HTML,全てのフィールド
- 16 : 10000 * FDF,選択したフィールド
- 17 : 10001 * FDF,全てのフィールド
- 18 : 10010 * FDF,選択したフィールド,空白のフィールドを含める
- 19 : 10011 * FDF,全てのフィールド
- 20 : 10100 * HTML,選択したフィールド
- 21 : 10101 * HTML,全てのフィールド
- 22 : 10110 * HTML,選択したフィールド,空白のフィールドを含める
- 23 : 10111 * HTML,全てのフィールド
- 24 : 11000 * FDF,選択したフィールド
- 25 : 11001 * FDF,全てのフィールド
* は既に登場している設定内容。
2. ボタンを作成したPDF を動作させて見ました。
動作テスト環境は
- Windows 7 64bit Enterprise ※90日評価版
- WebMatrix 3 <- これをWEBサーバーにしてURL先とする。
- Acrobat 8 Pro
WebMatrix 3 環境でフィールド値を受け取るページを作成。
以下のローカル・WEBサーバーに対して、送信を行います。
PDF上の送信・ボタンをクリックすると、
以下の画面が表示されます。
「ダウンロード中・・・」 状態になりますが、しばらくすると
以下のAcrobatアプリが起動され、WEBの内容が表示されます。
この様に予期しない状態になったのは、WebMarix 3 の環境が影響しているのかもしれません。
< 戻る >