TOP > AcroExch.PDAnnot > IsEqual [...]
説明
PDFファイル上の注釈が別の注釈と等しいかをチェックする。
形式
VARIANT_BOOL IsEqual(LPDISPATCH PDAnnot);
引数
- 第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キーでステップ実行しながら動作確認する。
- 事前に参照設定をする。
001 Sub AcroExch_PDAnnot_IsEqual()
002
003 Debug.Print "TEST_PDAnnot_IsEqual:" & Now
004 Dim objAcroAVDoc1 As New Acrobat.AcroAVDoc
005 Dim objAcroAVDoc2 As New Acrobat.AcroAVDoc
006 Dim objAcroPDDoc1 As Acrobat.AcroPDDoc
007 Dim objAcroPDDoc2 As Acrobat.AcroPDDoc
008 Dim objAcroPDPage1 As Acrobat.AcroPDPage
009 Dim objAcroPDPage2 As Acrobat.AcroPDPage
010 Dim objAcroPDAnnot1 As Acrobat.AcroPDAnnot
011 Dim objAcroPDAnnot2 As Acrobat.AcroPDAnnot
012 Dim lRet As Long '戻り値
013 Dim lAnnotsCnt As Long '注釈数
014 Dim j As Long '添え字
015 Dim lTextCnt As Long '件数
016
017 lTextCnt = 0
018 'PDFドキュメントを開いて表示する
019 lRet = objAcroAVDoc1.Open("E:\Test01.pdf", "")
020 lRet = objAcroAVDoc2.Open("E:\Test02.pdf", "")
021 Set objAcroPDDoc1 = objAcroAVDoc1.GetPDDoc()
022 Set objAcroPDDoc2 = objAcroAVDoc2.GetPDDoc()
023 '表紙のページ・オブジェクトを得る ★注意①
024 Set objAcroPDPage1 = objAcroPDDoc1.AcquirePage(0)
025 Set objAcroPDPage2 = objAcroPDDoc2.AcquirePage(0)
026 'ページに存在する注釈数を得る
027 lAnnotsCnt = objAcroPDPage1.GetNumAnnots() - 1
028 Debug.Print "全注釈数=" & (lAnnotsCnt + 1)
029 For j = 0 To lAnnotsCnt
030 '注釈オブジェクトを得る。
031 Set objAcroPDAnnot1 = objAcroPDPage1.GetAnnot(j)
032 Set objAcroPDAnnot2 = objAcroPDPage2.GetAnnot(j)
033 With objAcroPDAnnot1
034 Debug.Print "(" & j & ")GetSubtype=" & _
035 .GetSubtype
036 Debug.Print " GetContents=" & _
037 .GetContents
038 End With
039 With objAcroPDAnnot2
040 Debug.Print "(" & j & ")GetSubtype=" & _
041 .GetSubtype
042 Debug.Print " GetContents=" & _
043 .GetContents
044 End With
045 lRet = objAcroPDAnnot1.IsEqual(objAcroPDAnnot2)
046 If lRet = -1 Then
047 'same:等しい。
048 Debug.Print j & " 番目は等しい。"
049 Else
050 '等しくない
051 Debug.Print j & " 番目は等しくない。"
052 End If
053 lTextCnt = lTextCnt + 1
054 Next j
055 Debug.Print "件数=" & lTextCnt
056
057 'PDFファイルを保存しないで閉じる
058 lRet = objAcroAVDoc1.Close(1)
059 lRet = objAcroAVDoc2.Close(1)
060 'オブジェクトを強制解放する
061 Set objAcroPDAnnot1 = Nothing
062 Set objAcroPDAnnot2 = Nothing
063 Set objAcroAVDoc1 = Nothing
064 Set objAcroAVDoc2 = Nothing
065 Set objAcroPDPage1 = Nothing
066 Set objAcroPDPage2 = Nothing
067 Set objAcroPDDoc1 = Nothing
068 Set objAcroPDDoc2 = Nothing
069
070 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果 :異常処理
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ファイルの注釈は以下の様になっています。
補足
- 上記結果は全て正常ではありません。インデックス「0」は明らかに同じはずなのに「0」が戻り値に返されます。
- また、PDFファイル「Test02.pdf」のインデックスに対してのテキスト内容やタイプ(GetSubtype)も変です。
- 「★注意①」の部分と「IsEqual メソッド」が動作不良を起こすしています。
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >