AcroExch.PDAnnot: IsValid メソッド

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


説明

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

形式

VARIANT_BOOL IsValid();

引数

  1. 無し。

戻り値

  • -1 : 注釈のチェックに問題無し。
  • 0 : 注釈のチェックに問題有り。

動作するバージョン

VersionAdobe
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
8NOAcrobat 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

戻る

コメントを残す

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

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

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