AcroExch.PDAnnot: IsEqual メソッド

TOP > AcroExch.PDAnnot > IsEqual      [...]


説明

PDFファイル上の注釈が別の注釈と等しいかをチェックする。

 

形式

VARIANT_BOOL IsEqual(LPDISPATCH PDAnnot);

 

引数

  1. 第1引数(LPDISPATCH PDAnnot) :
    PDAnnotオブジェクト。

 

戻り値

  • -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

  

説明:2つのPDFファイルの表紙ページ上の注釈を比較します。

  • 2つのPDFファイルは元々1つのPDFファイルで、コピーしてリネームしただけです。
    表紙ページには2つの注釈が存在します。
  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

 

Sub AcroExch_PDAnnot_IsEqual()

    Debug.Print "TEST_PDAnnot_IsEqual:" & Now
    Dim objAcroAVDoc1       As New Acrobat.AcroAVDoc
    Dim objAcroAVDoc2       As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc1       As Acrobat.AcroPDDoc
    Dim objAcroPDDoc2       As Acrobat.AcroPDDoc
    Dim objAcroPDPage1      As Acrobat.AcroPDPage
    Dim objAcroPDPage2      As Acrobat.AcroPDPage
    Dim objAcroPDAnnot1     As Acrobat.AcroPDAnnot
    Dim objAcroPDAnnot2     As Acrobat.AcroPDAnnot
    Dim lRet                    As Long     '戻り値
    Dim lAnnotsCnt          As Long     '注釈数
    Dim j                       As Long     '添え字
    Dim lTextCnt            As Long     '件数

    lTextCnt = 0
    'PDFドキュメントを開いて表示する
    lRet = objAcroAVDoc1.Open("E:¥Test01.pdf", "")
    lRet = objAcroAVDoc2.Open("E:¥Test02.pdf", "")
    Set objAcroPDDoc1 = objAcroAVDoc1.GetPDDoc()
    Set objAcroPDDoc2 = objAcroAVDoc2.GetPDDoc()
    '表紙のページ・オブジェクトを得る ★注意①
    Set objAcroPDPage1 = objAcroPDDoc1.AcquirePage(0)
    Set objAcroPDPage2 = objAcroPDDoc2.AcquirePage(0)
    'ページに存在する注釈数を得る
    lAnnotsCnt = objAcroPDPage1.GetNumAnnots() - 1
    Debug.Print "全注釈数=" & (lAnnotsCnt + 1)
    For j = 0 To lAnnotsCnt
        '注釈オブジェクトを得る。
        Set objAcroPDAnnot1 = objAcroPDPage1.GetAnnot(j)
        Set objAcroPDAnnot2 = objAcroPDPage2.GetAnnot(j)
        With objAcroPDAnnot1
            Debug.Print "(" & j & ")GetSubtype=" & _
                        .GetSubtype
            Debug.Print "   GetContents=" & _
                        .GetContents
        End With
        With objAcroPDAnnot2
            Debug.Print "(" & j & ")GetSubtype=" & _
                        .GetSubtype
            Debug.Print "   GetContents=" & _
                        .GetContents
        End With
        lRet = objAcroPDAnnot1.IsEqual(objAcroPDAnnot2)
        If lRet = -1 Then
            'same:等しい。
            Debug.Print j & " 番目は等しい。"
        Else
            '等しくない
            Debug.Print j & " 番目は等しくない。"
        End If
        lTextCnt = lTextCnt + 1
    Next j
    Debug.Print "件数=" & lTextCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc1.Close(1)
    lRet = objAcroAVDoc2.Close(1)
    'オブジェクトを強制解放する
    Set objAcroPDAnnot1 = Nothing
    Set objAcroPDAnnot2 = Nothing
    Set objAcroAVDoc1 = Nothing
    Set objAcroAVDoc2 = Nothing
    Set objAcroPDPage1 = Nothing
    Set objAcroPDPage2 = Nothing
    Set objAcroPDDoc1 = Nothing
    Set objAcroPDDoc2 = Nothing

End Sub

 

実行結果 :異常処理

TEST_PDAnnot_IsEqual:2008/08/13 13:47:48
全注釈数=4
(0)GetSubtype=Text
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(0)GetSubtype=Text
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
0 番目は等しくない。
(1)GetSubtype=Popup
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(1)GetSubtype=Text
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
1 番目は等しくない。
(2)GetSubtype=Text
GetContents=2/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(2)GetSubtype=Popup
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
2 番目は等しくない。
(3)GetSubtype=Popup
GetContents=2/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(3)GetSubtype=Text
GetContents=2/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
3 番目は等しくない。
件数=4

※2つのPDFファイルの注釈は以下の様になっています。

PDAnnot:IsEqual メソッド

 

補足

  • 上記結果は全て正常ではありません。インデックス「0」は明らかに同じはずなのに「0」が戻り値に返されます。
  • また、PDFファイル「Test02.pdf」のインデックスに対してのテキスト内容やタイプ(GetSubtype)も変です。
  • 「★注意①」の部分と「IsEqual メソッド」が動作不良を起こすしています。

 

 

動作確認環境

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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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