AcroExch.PDAnnot: IsValid メソッド

TOP > AcroExch.PDAnnot > IsValid      [...]


説明

PDFファイル上の注釈をチェックする。

 

形式

VARIANT_BOOL IsValid();

 

引数

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

    Debug.Print "AcroExch_PDAnnot_IsValid:" & 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 objAcroTime         As New Acrobat.AcroTime
    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 lTextCnt            As Long     'Text件数
    Dim lIsVaildCnt         As Long     '件数
    
    lCnt = 0
    lTextCnt = 0
    lIsVaildCnt = 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)
            With objAcroPDAnnot
                If .GetSubtype = "Text" Then
                    Debug.Print i & ":" & j & " GetContents=" _
                            & .GetContents
                    lTextCnt = lTextCnt + 1
                End If
                lRet = .IsValid()
            End With
            If lRet <> -1 Then
                lIsVaildCnt = lIsVaildCnt + 1
            End If
        Next j
    Next i
    Debug.Print "全件数= " & lCnt
    Debug.Print "Text件数= " & lTextCnt
    Debug.Print "IsValid件数= " & lIsVaildCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)
    'オブジェクトを強制解放する
    Set objAcroTime = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroPDDoc = Nothing

End Sub

 

実行結果

  

※1回目の実行結果。処理に問題無し。
TEST_PDAnnot_IsValid:2008/08/18 16:50:30
0:0 GetContents=1/2 1ページ目のテキスト注釈。
0:2 GetContents=2/2 1ページ目のテキスト注釈。
1:0 GetContents=テスト用の注釈です。2ページ目です。
全件数= 247
Text件数= 3
IsValid件数= 0

※1回目の実行結果。処理に問題有り。
TEST_PDAnnot_IsValid:2008/08/18 16:51:06
0:0 GetContents=1/2 1ページ目のテキスト注釈。
0:2 GetContents=1/2 1ページ目のテキスト注釈。
1:0 GetContents=テスト用の注釈です。2ページ目です。
全件数= 247
Text件数= 3
IsValid件数= 0

 

補足

  • 上記は2回連続実行した結果です。
    それにも関わらず、GetContentsメソッドで得たテキスト内容が2回目では異常状態になっている。
    サンプルコードの ★注意① 部分が異常処理結果を起こしているとしか考えられない。
    それとも別の問題か。不明。
  •  ここで言っている「注釈に問題がないかのチェック」の詳細は不明です。
    objAcroPDAnnot オブジェクトがNothingで無ければ問題は無いと思われますが、Adobe社のSDKにはこれに関する詳細な説明が無いので予測できません。何をチェックしているのか?

 

動作確認環境

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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン