TOP > AcroExch.PDPage > *
説明
配列で管理されている注釈オブジェクトからインデックスで指定された1つの注釈(AcroPDAnnot)オブジェクトを返します。
形式
LPDISPATCH GetAnnot(long nIndex);
引数
- 第1引数(long nIndex) :
配列で管理されている注釈オブジェクトのインデックスを指定します。
戻り値
- AcroExch.PDAnnotオブジェクト。
動作するバージョン
| 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
実行結果
以下はExcelのVBA開発環境のイミディエイトウィンドウの内容です。
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キーでステップ実行し、各メソッドによりどのような動きをするかよく観察すること。
Adobe Web 解説
OLE Automation / AcroExch.PDPage / GetAnnot (公式サイト・英語)
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >