AcroExch.PDAnnot: IsOpen メソッド

TOP > AcroExch.PDAnnot > IsOpen      [...]


説明

PDFファイル上のテキスト注釈がドキュメント上で開いているかチェックする。

 

形式

VARIANT_BOOL IsOpen();

 

引数

  1. 無し。

 

戻り値

  • -1 : 開いている。
  • 0 : 開いていない。

 

動作するバージョン

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ファイルの表紙ページ上にあるテキスト注釈が開いているかを調べる。

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

 

Sub AcroExch_PDAnnot_IsOpen()

    Debug.Print "TEST_PDAnnot_IsOpen:" & Now
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc        As Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                    As Long     '戻り値
    Dim lAnnotsCnt          As Long     '注釈数
    Dim j                        As Long     '添え字
    Dim lTextCnt             As Long     '件数

    lTextCnt = 0
    'PDFドキュメントを開いて表示する
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    '表紙のページ・オブジェクトを得る ★注意①
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
    'ページに存在する注釈数を得る
    lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
    Debug.Print "全注釈数=" & (lAnnotsCnt + 1)
    For j = 0 To lAnnotsCnt
        Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
        With objAcroPDAnnot
            Debug.Print "(" & j & ")GetSubtype=" & _
                        .GetSubtype
            Debug.Print "   GetContents=" & _
                        .GetContents
        End With
        lRet = objAcroPDAnnot.IsOpen()
        If lRet = -1 Then
            Debug.Print "  IsOpen = True(" & lRet & ")"
        Else
            Debug.Print "  IsOpen = False(" & lRet & ")"
        End If
        lTextCnt = lTextCnt + 1
    Next j
    Debug.Print "件数=" & lTextCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)
    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPDDoc = Nothing

End Sub

 

実行結果

※Text注釈画面を2つとも表示。

PDAnnot:IsOpen メソッド(開いた状態)

TEST_PDAnnot_IsOpen:2008/08/17 17:17:26
全注釈数=4
(0)GetSubtype=Text
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = False(0)
(1)GetSubtype=Popup
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = True(-1)
(2)GetSubtype=Text
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = False(0)
(3)GetSubtype=Popup
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = True(-1)
件数=4

※Text注釈画面を2つとも閉じた状態。

PDAnnot:IsOpen メソッド(閉じた状態)

TEST_PDAnnot_IsOpen:2008/08/17 17:15:28
全注釈数=4
(0)GetSubtype=Text
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = False(0)
(1)GetSubtype=Popup
GetContents=1/2 1ページ目のテキスト注釈。
IsOpen = False(0)
(2)GetSubtype=Text
GetContents=2/2 1ページ目のテキスト注釈。
IsOpen = False(0)
(3)GetSubtype=Popup
GetContents=2/2 1ページ目のテキスト注釈。
IsOpen = False(0)
件数=4

 

補足

  • 上記は2つのテキスト注釈を開いた状態と閉じた状態の2つでテストした結果です。
  • 英語版SDKではこのIsOpenメソッドを以下の様に解説している。
    「Tests whether a text annotation is open.」
    しかし、上記のGetSubtypeメソッドの結果がPopupの物だけテストしている。
    つまりIsOpenメソッドはGetSubtypeメソッドの結果がPopupの物だけしかテスト出来ない事になる。
    これはバグかSDKの解釈ミスか? それとも上記サンプルのロジックミスか?

 

注意事項

  • 他にPDFファイルが開いていると誤動作する場合がある。
    特に上記サンプルの注意①の結果が変になる。

 

動作確認環境

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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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