TOP > AcroExch.PDAnnot > IsOpen [...]
説明
PDFファイル上のテキスト注釈がドキュメント上で開いているかチェックする。
形式
VARIANT_BOOL IsOpen();
引数
- 無し。
戻り値
- -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キーでステップ実行しながら動作確認する。
- 事前に参照設定をする。
001 Sub AcroExch_PDAnnot_IsOpen()
002
003 Debug.Print "TEST_PDAnnot_IsOpen:" & Now
004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
005 Dim objAcroPDDoc As Acrobat.AcroPDDoc
006 Dim objAcroPDPage As Acrobat.AcroPDPage
007 Dim objAcroPDAnnot As Acrobat.AcroPDAnnot
008 Dim lRet As Long '戻り値
009 Dim lAnnotsCnt As Long '注釈数
010 Dim j As Long '添え字
011 Dim lTextCnt As Long '件数
012
013 lTextCnt = 0
014 'PDFドキュメントを開いて表示する
015 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
016 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
017 '表紙のページ・オブジェクトを得る ★注意①
018 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
019 'ページに存在する注釈数を得る
020 lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
021 Debug.Print "全注釈数=" & (lAnnotsCnt + 1)
022 For j = 0 To lAnnotsCnt
023 Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
024 With objAcroPDAnnot
025 Debug.Print "(" & j & ")GetSubtype=" & _
026 .GetSubtype
027 Debug.Print " GetContents=" & _
028 .GetContents
029 End With
030 lRet = objAcroPDAnnot.IsOpen()
031 If lRet = -1 Then
032 Debug.Print " IsOpen = True(" & lRet & ")"
033 Else
034 Debug.Print " IsOpen = False(" & lRet & ")"
035 End If
036 lTextCnt = lTextCnt + 1
037 Next j
038 Debug.Print "件数=" & lTextCnt
039
040 'PDFファイルを保存しないで閉じる
041 lRet = objAcroAVDoc.Close(1)
042 'オブジェクトを強制解放する
043 Set objAcroAVDoc = Nothing
044 Set objAcroPDAnnot = Nothing
045 Set objAcroPDPage = Nothing
046 Set objAcroPDDoc = Nothing
047
048 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
※Text注釈画面を2つとも表示。

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つとも閉じた状態。

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
< 戻る >