AcroExch.PDPage: GetNumAnnots メソッド

TOP > AcroExch.PDPage > GetNumAnnots      [...]


説明

AcroPDPageオブジェクトで指定されたページに存在する全注釈数を返す。

 

形式

long GetNumAnnots();

 

引数

  1. 無し。

 

戻り値

  • 0以上の数値。
  • 0ならば注釈はページに無い。※ <- SDKにはこの記述は無い。

 

動作するバージョン

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

Acrobat 5.0.5
6
-

Acrobat 6.0.3 Pro
7
NO
Acrobat 7.0.8 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ファイルに存在する注釈オブジェクトの種類の総数をチェックする。

★注意:以下のサンプルは正しい結果を得る事が出来ません。
バグか、SDK資料の解釈ミスか。調査中です。

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

 

Sub AcroExch_PDPage_GetNumAnnots()

    Dim objAcroApp           As New Acrobat.AcroApp
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc        As New Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                      As Long     '戻り値
    Dim lCnt                     As Long     '件数
    Dim i                         As Long     '添え字
    Dim j                        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
    
    'Acrobatを起動表示する
    lRet = objAcroApp.Show  '(TEST用)
    'PDFドキュメントを開く
    lRet = objAcroPDDoc.Open("E:¥Test01.pdf")
    '画面にPDFを表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "") '(TEST用)
    
    lPageHitCnt = 0
    lCntText = 0
    lCntLink = 0
    lCntPopup = 0
    lCntEtc = 0
    
    lPage = objAcroPDDoc.GetNumPages - 1
    Debug.Print "全頁数=" & lPage + 1
    
    For i = 0 To lPage
        Set objAcroPDPage = Nothing '(TEST用)
        Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
        'ページにおける注釈の数を得ます。★バグ有り?
        lAnnots = objAcroPDPage.GetNumAnnots1
        bSkip = True
        For k = 0 To lAnnots
            '注釈のページ勢ぞろいから指定された注釈を得ます。
            Set objAcroPDAnnot = Nothing '(TEST用)
            '注釈オブジェクトPDAnnotを作成する。★バグか?
            Set objAcroPDAnnot = objAcroPDPage.GetAnnot(k)
            '注釈オブジェクトが存在するかの事前チェック
            If Not (objAcroPDAnnot Is Nothing) Then
               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
            End If
        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      '(TEST用)
    lRet = objAcroApp.Exit      '(TEST用)

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

End Sub

  

実行結果

全頁数=34
Text の合計=7
Popup の合計=0
Link の合計=236
その他の合計=0
ヒット頁数=14

※上記の結果は正しくありません。「Textの合計」と「Popupの合計」は共に3が正解です。

 

補足

  • Acrobat Pro 8.1.2でTest01.pdfを見るとテキスト注釈は3つしか存在しません。だから「Textの合計」と「Popupの合計」は共に3が正解です。※この考え方で合っているとサイト管理者は考えています。
  • F8キーでステップ実行し、各メソッドによりどのような動きをするかよく観察すること。
  • (TEST用)はテスト用のロジックで実用時は不要です。
  • 「If Not (objAcroPDAnnot Is Nothing) Then」のロジックは不要かもしれません。

 

動作確認環境

  • WindowsXP Pro( + SP3) +
    Acrobat 7.0.8 Pro + Office 2003 + MicrosoftUpdate
  • WindowsXP Pro( + SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
    ※2つのPC環境で動作確認をしたが、結果不良でした。

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.