AFormAut : SetJavaScriptAction メソッド

TOP > AFormAut > SetJavaScriptAction メソッド


 

説明

 

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) キャリッジリターンを入れて、
    キレイにフォーマットしても構わない。

 

戻り値

 

  • 無し。

 

動作するバージョン

 

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 : 処理前のレジストリに以下を追加する必要があります。
    [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 メソッド 印刷ボタンをつける

 

Option Explicit

Public Const PDSaveFull = &H1
Public Const PDSaveLinearized = &H4
Public Const PDSaveCollectGarbage = &H20

Sub AFormAut_SetJavaScriptAction_test()

    Dim lRet            As Long
    
    Const CON_PDF_FILE = "D:¥work¥ReleaseNotes.pdf"
    Const CON_PDF_FI_S = "D:¥work¥ReleaseNotes-S.pdf"
    
    'Acrobatオブジェクトの定義&作成
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc    As Acrobat.AcroPDDoc
    Dim objAcroPDPage   As Acrobat.AcroPDPage
    Dim objAcroPoint    As Acrobat.AcroPoint
     
    Dim objAFormApp     As AFORMAUTLib.AFormApp
    Dim objAFormFields  As AFORMAUTLib.Fields
    Dim objAFormField   As AFORMAUTLib.Field
    
    Dim strFiledName    As String
    Dim lCnt            As Long
    
    '※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_SetJavaScriptAction_test:
    End If
    
    'PDFページサイズを取得
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
    Set objAcroPoint = objAcroPDPage.GetSize
   
    '*―――――――――――――――――――--
    '* AFormオブジェクトの作成
    
    Set objAFormApp = CreateObject("AFormAut.App")
    Set objAFormFields = objAFormApp.Fields
    
    '*―――――――――――――――――――--
    '* 印刷ボタンを追加 頁右上に配置

    Set objAFormField = objAFormFields.Add( _
        "ButtonXX", "button", 0, _
        50, objAcroPoint.y - 20, 150, objAcroPoint.y - 60)
         
    'ボタン・フィールドの設定
    With objAFormField
        'フォントサイズ
        .TextSize = 20
        'ボタンのスタイル
        .BorderStyle = "beveled"    '浮き出し
        'ボタンのキャプション
        .SetButtonCaption "N", "印刷"
        '背景色
        ' ※http://pdf-file.nnn2.com/?p=145
        .SetBackgroundColor "RGB", 0.7, 0.7, 0.7, 0
        'トリガーに対する JavaScript の設定
        ' ※印刷ダイアログを出す
        .SetJavaScriptAction "up", "this.print(true);"
    End With
        
    '設定後に開放
    Set objAFormField = Nothing
    
Skip_AFormAut_SetJavaScriptAction_test:

    '*―――――――――――――――――――--
    '* 終了処理
    
    '変更したPDFファイルの保存はPDDoc.Saveで必ず行う
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
    lRet = objAcroPDDoc.Save( _
        PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
        CON_PDF_FI_S)
    If lRet = 0 Then
        MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
            CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
    End If
    
    'AVDocを閉じる
    lRet = objAcroAVDoc.Close(1)
    
    'Acrobatアプリケーションの終了
    objAcroApp.Hide
    objAcroApp.Exit
    
    'オブジェクトの開放
    Set objAFormFields = Nothing
    Set objAFormApp = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPoint = Nothing
    Set objAcroApp = Nothing
    
    MsgBox "End Sub"

End Sub

※ソースコードHTML変換:SourceConverter

 


 

実行結果

 

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 等が同等の命令です。

 

Adobe Web 解説 URL(英語)

 

 

その他の参考URL

 

  1. テキストフィールドのためのJavaScript フォーマット関数の簡易説明 (日本語)
    http://pdflib.techstyle.jp/files/PDFlib-9.0.1-tutorial-J.pdf#page=268
      
  2. AFDate_FormatEx , AFDate_KeystrokeEx , AFSpecial_Keystroke , AFSpecial_Format , AFNumber_Keystroke , AFNumber_Format
    JaveScript 関数 の使い方の例 (英語)
    http://www.lystech.com/webhelp/Content/format-pdf-text-box/advanced.htm
      
  3. [Acrobat][PDF][JavaScript]ボタンについて(日本語)
    http://d.hatena.ne.jp/seuzo/touch/searchdiary?word=*[Acrobat]
      
  4. イベントのタイプと名前の組み合わせ (日本語)
    http://kb2.adobe.com/jp/cps/511/511727/attachments/511727_js_api_reference.pdf#page=359
     
  5. サンプル(英語)
    http://www.vbforums.com/showthread.php?113838-Please-help-me-with-this-PDF-qeustion
  6. サンプル(英語)
    http://www.planetpdf.com/forumarchive/InsertPDF.txt
  7. サンプル(英語)
    http://forum.planetpdf.com/wb/default.asp?action=9&fid=6&read=18803

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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