TOP > AcroExch.PDPage > GetAnnot [...]
説明
配列で管理されている注釈オブジェクトからインデックスで指定された1つの注釈(AcroPDAnnot)オブジェクトを得ます。
形式
LPDISPATCH GetAnnot(long nIndex);
引数
- 第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キーでステップ実行しながら動作確認する。
- 事前に参照設定をする。
001 Sub AcroExch_AcroPDPage_GetAnnot()
002
003 Debug.Print "Test_AcroPDPage_GetAnnot:" & Now
004 Dim objAcroApp As New Acrobat.AcroApp
005 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
006 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
007 Dim objAcroPDPage As Acrobat.AcroPDPage
008 Dim objAcroAVPageView As Acrobat.AcroAVPageView
009 Dim objAcroPDAnnot As Acrobat.AcroPDAnnot
010 Dim lRet As Long '戻り値
011 Dim lCnt As Long '件数
012 Dim i As Long '添え字
013 Dim k As Long '添え字
014 Dim lPage As Long 'ページ数
015 Dim lPageHitCnt As Long 'ページ数合計
016
017 Dim lAnnots As Long
018 Dim lCntText As Long
019 Dim lCntLink As Long
020 Dim lCntPopup As Long
021 Dim lCntEtc As Long
022 Dim bSkip As Boolean
023
024 lPageHitCnt = 0
025 lCntText = 0
026 lCntLink = 0
027 lCntPopup = 0
028 lCntEtc = 0
029
030 'Acrobatを起動表示する
031 lRet = objAcroApp.Show
032 '画面にPDFドキュメントを表示する。
033 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
034
035 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
036 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
037
038 lPage = objAcroPDDoc.GetNumPages - 1
039 Debug.Print "全頁数=" & lPage + 1
040
041 For i = 0 To lPage
042 'ページ移動する。
043 lRet = objAcroAVPageView.Goto(i)
044 '表示されているページのAcroPDPageを得る
045 Set objAcroPDPage = objAcroAVPageView.GetPage()
046 'ページにおける注釈の数を得ます。★バグ有り?
047 lAnnots = objAcroPDPage.GetNumAnnots - 1
048 bSkip = True
049 For k = 0 To lAnnots
050 '注釈のページ勢ぞろいから指定された注釈を得る
051 '注釈オブジェクトPDAnnotを作成する。★バグか?
052 Set objAcroPDAnnot = objAcroPDPage.GetAnnot(k)
053 bSkip = False
054 Select Case objAcroPDAnnot.GetSubtype
055 Case "Text"
056 lCntText = lCntText + 1
057 Case "Link"
058 lCntLink = lCntLink + 1
059 Case "Popup"
060 lCntPopup = lCntPopup + 1
061 Case Else
062 lCntEtc = lCntEtc + 1
063 End Select
064 ' Debug.Print i & ":" & k & ":" & _
065 objAcroPDAnnot.GetSubtype
066 ' Debug.Print i & ":" & k & ":" & _
067 objAcroPDAnnot.GetTitle
068 ' Debug.Print i & ":" & k & ":" & _
069 objAcroPDAnnot.GetContents
070 Next k
071 If bSkip = False Then
072 lPageHitCnt = lPageHitCnt + 1
073 End If
074 Next i
075
076 Debug.Print "Text の合計=" & lCntText
077 Debug.Print "Popup の合計=" & lCntPopup
078 Debug.Print "Link の合計=" & lCntLink
079 Debug.Print "その他の合計=" & lCntEtc
080 Debug.Print "ヒット頁数=" & lPageHitCnt
081 'PDFファイルを保存しないで閉じる
082 lRet = objAcroPDDoc.Close
083
084 'Acrobatを閉じる
085 lRet = objAcroApp.Hide
086 lRet = objAcroApp.Exit
087
088 'オブジェクトを強制解放する
089 Set objAcroAVDoc = Nothing
090 Set objAcroPDAnnot = Nothing
091 Set objAcroPDPage = Nothing
092 Set objAcroAVPageView = Nothing
093 Set objAcroPDDoc = Nothing
094 Set objAcroApp = Nothing
095
096 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
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
< 戻る >