TOP > AcroExch.PDAnnot > IsValid [...]
説明
PDFファイル上の注釈をチェックする。
形式
VARIANT_BOOL IsValid();
引数
- 無し。
戻り値
- -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_IsValid()
002
003 Debug.Print "AcroExch_PDAnnot_IsValid:" & Now
004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
005 Dim objAcroAVPageView As Acrobat.AcroAVPageView
006 Dim objAcroPDDoc As Acrobat.AcroPDDoc
007 Dim objAcroPDPage As Acrobat.AcroPDPage
008 Dim objAcroPDAnnot As Acrobat.AcroPDAnnot
009 Dim objAcroTime As New Acrobat.AcroTime
010 Dim objRect As Acrobat.AcroRect
011 Dim lRet As Long '戻り値
012 Dim lPagesCnt As Long 'ページ数
013 Dim lAnnotsCnt As Long '注釈数
014 Dim i As Long '添え字
015 Dim j As Long '添え字
016 Dim lCnt As Long '件数
017 Dim lTextCnt As Long 'Text件数
018 Dim lIsVaildCnt As Long '件数
019
020 lCnt = 0
021 lTextCnt = 0
022 lIsVaildCnt = 0
023 'PDFドキュメントを開いて表示する。
024 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
025 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
026 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
027 'PDFドキュメントのページ数を得る
028 lPagesCnt = objAcroPDDoc.GetNumPages() - 1
029 For i = 0 To lPagesCnt
030 '該当ページのページオブジェクトを得る ★注意①
031 Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
032 'PDFビュアーのページを移動させる
033 lRet = objAcroAVPageView.Goto(i) '(TEST用)
034 'ページに存在する注釈数を得る
035 lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
036 For j = 0 To lAnnotsCnt
037 lCnt = lCnt + 1
038 Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
039 With objAcroPDAnnot
040 If .GetSubtype = "Text" Then
041 Debug.Print i & ":" & j & " GetContents=" _
042 & .GetContents
043 lTextCnt = lTextCnt + 1
044 End If
045 lRet = .IsValid()
046 End With
047 If lRet <> -1 Then
048 lIsVaildCnt = lIsVaildCnt + 1
049 End If
050 Next j
051 Next i
052 Debug.Print "全件数= " & lCnt
053 Debug.Print "Text件数= " & lTextCnt
054 Debug.Print "IsValid件数= " & lIsVaildCnt
055
056 'PDFファイルを保存しないで閉じる
057 lRet = objAcroAVDoc.Close(1)
058 'オブジェクトを強制解放する
059 Set objAcroTime = Nothing
060 Set objAcroAVDoc = Nothing
061 Set objAcroPDAnnot = Nothing
062 Set objAcroPDPage = Nothing
063 Set objAcroAVPageView = Nothing
064 Set objAcroPDDoc = Nothing
065
066 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
※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
< 戻る >