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