説明
PDF 上のフィールドにAcrobat JavaScript を設定します。

形式
void SetJavaScriptAction (
LPCTSTR bstrTrigger ,
LPCTSTR bstrTheScript ) ;
引数
- 第一引数 ( LPCTSTR bstrTrigger ) :
アクションのトリガ(イベント)を以下の文字列で指定します。
- up : マウスボタンを放す
- down : マウスボタンを押す
- enter : マウス・ポインタを範囲内に入れる
- exit : マウス・ポインタを範囲外に出す
- calculate : フィールドに割り当てた計算が実行された時
- validate : フィール内容が変更された時
- format : 計算が終了した時
- keystroke : 入力があった時
- 第二引数 ( LPCTSTR bstrTheScript ) :
トリガで実行される一連の JavaScript コードの文字列。JavaScript コード内にVBのchr(9) タブ、chr(13) キャリッジリターンを入れて、キレイにフォーマットしても構わない。
戻り値
- 無し。
動作するバージョン
| 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
PDFの1ページ目の右上に印刷ダイアログ画面を表示するボタンを付ける。

- 事前に 参照設定(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_SetJavaScriptAction_test()
008
009 Dim lRet As Long
010
011 Const CON_PDF_FILE = "D:\work\ReleaseNotes.pdf"
012 Const CON_PDF_FI_S = "D:\work\ReleaseNotes-S.pdf"
013
014 'Acrobatオブジェクトの定義&作成
015 Dim objAcroApp As New Acrobat.AcroApp
016 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
017 Dim objAcroPDDoc As Acrobat.AcroPDDoc
018 Dim objAcroPDPage As Acrobat.AcroPDPage
019 Dim objAcroPoint As Acrobat.AcroPoint
020
021 Dim objAFormApp As New AFORMAUTLib.AFormApp
022 Dim objAFormFields As AFORMAUTLib.Fields
023 Dim objAFormField As AFORMAUTLib.Field
024
025 Dim strFiledName As String
026 Dim lCnt As Long
027
028 '※CreateObject("AFormAut.App")のエラー
029 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
030 '※回避用 / メモリにAcrobatを強制ロードさせる
031 objAcroApp.CloseAllDocs
032 objAcroApp.Hide
033
034 '*―――――――――――――――――――--
035 '* PDFファイルを開く
036
037 '処理対象のPDFファイルを開く
038 '※AVDocでOpenしないと"AFormAut.App"で実行エラー
039 lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
040 If lRet = 0 Then
041 MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
042 CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
043 GoTo Skip_AFormAut_SetJavaScriptAction_test:
044 End If
045
046 'PDFページサイズを取得
047 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
048 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
049 Set objAcroPoint = objAcroPDPage.GetSize
050
051 '*―――――――――――――――――――--
052 '* AFormオブジェクトの作成
053
054 ' Set objAFormApp = CreateObject("AFormAut.App")
055 Set objAFormFields = objAFormApp.Fields
056
057 '*―――――――――――――――――――--
058 '* 印刷ボタンを追加 頁右上に配置
059
060 Set objAFormField = objAFormFields.Add( _
061 "ButtonXX", "button", 0, _
062 50, objAcroPoint.y - 20, 150, objAcroPoint.y - 60)
063
064 'ボタン・フィールドの設定
065 With objAFormField
066 'フォントサイズ
067 .TextSize = 20
068 'ボタンのスタイル
069 .BorderStyle = "beveled" '浮き出し
070 'ボタンのキャプション
071 .SetButtonCaption "N", "印刷"
072 '背景色
073 ' ※https://pdf-file.nnn2.com/?p=145
074 .SetBackgroundColor "RGB", 0.7, 0.7, 0.7, 0
075 'トリガーに対する JavaScript の設定
076 ' ※印刷ダイアログを出す
077 .SetJavaScriptAction "up", "this.print(true);"
078 End With
079
080 '設定後に開放
081 Set objAFormField = Nothing
082
083 Skip_AFormAut_SetJavaScriptAction_test:
084
085
086
087 '*―――――――――――――――――――--
088 '* 終了処理
089
090 '変更したPDFファイルの保存はPDDoc.Saveで必ず行う
091 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
092 lRet = objAcroPDDoc.Save( _
093 PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
094 CON_PDF_FI_S)
095 If lRet = 0 Then
096 MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
097 CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
098 End If
099
100 'AVDocを閉じる
101 lRet = objAcroAVDoc.Close(1)
102
103 'Acrobatアプリケーションの終了
104 objAcroApp.Hide
105 objAcroApp.Exit
106
107 'オブジェクトの開放
108 Set objAFormFields = Nothing
109 Set objAFormApp = Nothing
110 Set objAcroAVDoc = Nothing
111 Set objAcroPDDoc = Nothing
112 Set objAcroPDPage = Nothing
113 Set objAcroPoint = Nothing
114 Set objAcroApp = Nothing
115
116 MsgBox "End Sub"
117
118 End Sub
実行結果
1. Acrobat 7.1.4
- 印刷ボタンを押すと、印刷ダイアログ画面が表示される。
、
2. Acrobat X (10.1.8)
Acrobat 7.1.4 と結果は同じ。
3. Acrobat XI (11.0.5)
Acrobat 7.1.4 と結果は同じ。
備考
- 「トリガ」が正解です。 「トリガー」ではないです。
- Acrobat JavaScript では setAction 等が同等の命令です。
その他の参考URL
- イベントのタイプと名前の組み合わせ (日本語)
http://kb2.adobe.com/jp/cps/511/511727/attachments/511727_js_api_reference.pdf#page=359
- サンプル(英語)
http://www.vbforums.com/showthread.php?113838-Please-help-me-with-this-PDF-qeustion
Adobe Web 解説
OLE Automation / AFormAut / SetJavaScriptAction (公式サイト・英語)
< 戻る >