AcroExch.PDAnnot: SetOpen メソッド

TOP > AcroExch.PDAnnot > SetOpen      [...]


説明

PDFファイル上のテキスト注釈を開いたり、閉じた状態に設定する。

 

形式

VARIANT_BOOL SetOpen(long bIsOpen);

 

引数

  1. 第1引数(long bIsOpen) :
    0以外の整数の時は開く。0は閉じる。

 

戻り値

  • 常に-1が返る。

 

動作するバージョン

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_SetOpen()

    Debug.Print "AcroExch_PDAnnot_SetOpen:" & Now
    Dim objAcroAVDoc           As New Acrobat.AcroAVDoc
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim objAcroPDDoc           As Acrobat.AcroPDDoc
    Dim objAcroPDPage        As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim objRect                 As Acrobat.AcroRect
    Dim lRet                      As Long     '戻り値
    Dim lPagesCnt             As Long     'ページ数
    Dim lAnnotsCnt           As Long     '注釈数
    Dim i                         As Long     '添え字
    Dim j                        As Long     '添え字
    Dim lCnt                   As Long     '件数
    Dim lPopupCnt           As Long     'Popup件数
    
    lCnt = 0
    lPopupCnt = 0
    
    'PDFドキュメントを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    'PDFドキュメントのページ数を得る
    lPagesCnt = objAcroPDDoc.GetNumPages() - 1
    For i = 0 To lPagesCnt
        '該当ページのページオブジェクトを得る ★注意①
        Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
        'PDFビュアーのページを移動させる
        lRet = objAcroAVPageView.Goto(i)    '(TEST用)
        'ページに存在する注釈数を得る
        lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
        For j = 0 To lAnnotsCnt
            lCnt = lCnt + 1
            Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
            If objAcroPDAnnot.GetSubtype = "Popup" Then
                'GetSubtype が”Popup”の時だけ設定出来る
                lRet = objAcroPDAnnot.SetOpen(0)   '閉じる
                lPopupCnt = lPopupCnt + 1
            End If
        Next j
    Next i
    Debug.Print "全件数= " & lCnt
    Debug.Print "Popup変更件数= " & lPopupCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)    '(TEST用)
    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroPDDoc = Nothing

End Sub

 

実行結果

TEST_PDAnnot_SetOpen:2008/09/25 17:04:16
全件数= 247
Popup変更件数= 23

 

補足

  • SetOpenメソッドは GetSubtype = "Popup" の時のみ使用出来る。
  • 上記の実行結果は「Popup変更件数= 3」が正解。
    つまり注意①の箇所の影響でテキスト注釈の判断が出来ない。
    バグと思われる。

 

動作確認環境

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

 

戻る

「AcroExch.PDAnnot: SetOpen メソッド」への3件のフィードバック

  1. PopupではなくTextで同じことがしたいのですが、不可能でしょうか?

  2. しゅうぞー さん
    はじめまして。

    「AcroExch.PDAnnot:SetOpen メソッド」関連の動きを再確認しました。この周辺部分は過去(2014年)にかなりの時間を当てて検証しました。相変わらず、GetSubtypeとGetContentsの内容、更にその表示順に規則性すら見つけられない不可解な動きをします。テストデータに問題が有るのかもしれませんが。過去に記憶に無い動きも見られます。

    質問内容に関しては「テストした結果が全て」でお願いします。
    つまり、テストで動いたら使用可能、動かなければ使用不可、となります。
    こちらで返答出来るだけの正確な動作確認が取れないからです。

    申し訳ありませんが、宜しくお願いいたします。

  3. 管理人さん

    早速の返信ありがとうございました。
    大変参考になりました。
    お忙しい中対応してくださり、感謝いたします。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください