AcroExch.PDPage: GetAnnot メソッド

TOP > AcroExch.PDPage > GetAnnot      [...]


説明

配列で管理されている注釈オブジェクトからインデックスで指定された1つの注釈(AcroPDAnnot)オブジェクトを得ます。

 

形式

LPDISPATCH GetAnnot(long nIndex);

 

引数

  1. 第1引数(long nIndex) :
    配列で管理されている注釈オブジェクトのインデックスを指定する。

 

戻り値

  • AcroExch.PDAnnotオブジェクト。

 

動作するバージョン

Version Adobe
Acrobat
備考
4
-
Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-

Acrobat 5.0.5
6
-

Acrobat 6.0.3 Pro
7
-
Acrobat 7.0.9 Pro
Acrobat 7.1.4 Pro
8
NO
Acrobat 8.1.2 Pro
9
-
Acrobat 9.3.2 Extended
10
-
Acrobat X (10.1.8) Extended
11
-
Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

 






サンプル:ExcelのVBA

 

説明:PDFドキュメント内の注釈オブジェクトの種類を集計する。

★注意:以下のサンプルは正しい結果を得るとは限りません。
GetNumAnnotsメソッドが正しく動作している様に見えないからです。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

 

Sub AcroExch_AcroPDPage_GetAnnot()

    Debug.Print "Test_AcroPDPage_GetAnnot:" & Now
    Dim objAcroApp          As New Acrobat.AcroApp
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc        As New Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                   As Long     '戻り値
    Dim lCnt                   As Long     '件数
    Dim i                       As Long     '添え字
    Dim k                      As Long     '添え字
    Dim lPage                As Long     'ページ数
    Dim lPageHitCnt        As Long     'ページ数合計
    
    Dim lAnnots             As Long
    Dim lCntText            As Long
    Dim lCntLink            As Long
    Dim lCntPopup         As Long
    Dim lCntEtc             As Long
    Dim bSkip               As Boolean
    
    lPageHitCnt = 0
    lCntText = 0
    lCntLink = 0
    lCntPopup = 0
    lCntEtc = 0
    
    'Acrobatを起動表示する
    lRet = objAcroApp.Show
    '画面にPDFドキュメントを表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    
    lPage = objAcroPDDoc.GetNumPages - 1
    Debug.Print "全頁数=" & lPage + 1
    
    For i = 0 To lPage
        'ページ移動する。
        lRet = objAcroAVPageView.Goto(i)
        '表示されているページのAcroPDPageを得る
        Set objAcroPDPage = objAcroAVPageView.GetPage()
        'ページにおける注釈の数を得ます。★バグ有り?
        lAnnots = objAcroPDPage.GetNumAnnots - 1
        bSkip = True
        For k = 0 To lAnnots
            '注釈のページ勢ぞろいから指定された注釈を得る
            '注釈オブジェクトPDAnnotを作成する。★バグか?
            Set objAcroPDAnnot = objAcroPDPage.GetAnnot(k)
            bSkip = False
            Select Case objAcroPDAnnot.GetSubtype
            Case "Text"
                lCntText = lCntText + 1
            Case "Link"
                lCntLink = lCntLink + 1
            Case "Popup"
                lCntPopup = lCntPopup + 1
            Case Else
                lCntEtc = lCntEtc + 1
            End Select
'            Debug.Print i & ":" & k & ":" & _
                    objAcroPDAnnot.GetSubtype
'            Debug.Print i & ":" & k & ":" & _
                    objAcroPDAnnot.GetTitle
'            Debug.Print i & ":" & k & ":" & _
                    objAcroPDAnnot.GetContents
        Next k
        If bSkip = False Then
            lPageHitCnt = lPageHitCnt + 1
        End If
    Next i
    
    Debug.Print "Text の合計=" & lCntText
    Debug.Print "Popup の合計=" & lCntPopup
    Debug.Print "Link の合計=" & lCntLink
    Debug.Print "その他の合計=" & lCntEtc
    Debug.Print "ヒット頁数=" & lPageHitCnt
    'PDFファイルを保存しないで閉じる
    lRet = objAcroPDDoc.Close

    'Acrobatを閉じる
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit

    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroApp = Nothing

End Sub

 

実行結果

Test_AcroPDPage_GetAnnot:2008/07/24 11:32:54
全頁数=34
Text の合計=2
Popup の合計=2
Link の合計=239
その他の合計=0
ヒット頁数=14
Test_AcroPDPage_GetAnnot:2008/07/24 11:33:10
全頁数=34
Text の合計=2
Popup の合計=21
Link の合計=220
その他の合計=0
ヒット頁数=14

※上記は2回実行した結果です。
他の操作も何もしていないのに結果が異なります。
バグが、SDKの解釈ミス(ロジックミス)のどちらかです。

 

補足

  • F8キーでステップ実行し、各メソッドによりどのような動きをするかよく観察すること。

 

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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