AFormAut : SetJavaScriptAction メソッド

TOP > AFormAut > *


説明

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

AFormAut : SetJavaScriptAction メソッド

形式

void SetJavaScriptAction (
        LPCTSTR  bstrTrigger ,
        LPCTSTR  bstrTheScript ) ;

引数

  1. 第一引数 ( LPCTSTR  bstrTrigger ) :
    アクションのトリガ(イベント)を以下の文字列で指定します。 
    • up : マウスボタンを放す
    • down : マウスボタンを押す
    • enter : マウス・ポインタを範囲内に入れる
    • exit : マウス・ポインタを範囲外に出す
    • calculate : フィールドに割り当てた計算が実行された時
    • validate : フィール内容が変更された時
    • format : 計算が終了した時
    • keystroke : 入力があった時
  2. 第二引数 ( 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 : SetJavaScriptAction メソッド 印刷ボタンをつける
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

  • 印刷ボタンを押すと、印刷ダイアログ画面が表示される。
       、
    AFormAut : SetJavaScriptAction メソッド
      

2. Acrobat X (10.1.8)

Acrobat 7.1.4 と結果は同じ。

3. Acrobat XI (11.0.5)

Acrobat 7.1.4 と結果は同じ。

備考

  1. 「トリガ」が正解です。 「トリガー」ではないです。
  2. Acrobat JavaScript では setAction 等が同等の命令です。

その他の参考URL

  1. イベントのタイプと名前の組み合わせ (日本語)
    http://kb2.adobe.com/jp/cps/511/511727/attachments/511727_js_api_reference.pdf#page=359
     
  2. サンプル(英語)
    http://www.vbforums.com/showthread.php?113838-Please-help-me-with-this-PDF-qeustion

Adobe Web 解説

OLE Automation / AFormAut / SetJavaScriptAction (公式サイト・英語)

戻る

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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