AcroExch.PDAnnot: GetContents メソッド

TOP > AcroExch.PDAnnot > GetContents      [...]


説明

テキスト注釈のコンテンツ(テキスト)を得ます。

 

形式

BSTR GetContents();

 

引数

  1. 無し。

 

戻り値

  • テキスト注釈のコンテンツ(テキスト)。

 

動作するバージョン

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

    Debug.Print "TEST_PDAnnot_Contents:" & Now
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc        As Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                    As Long     '戻り値
    Dim lAnnotsCnt          As Long     '注釈数
    Dim j                        As Long     '添え字
    Dim lTextCnt             As Long     '件数

    lTextCnt = 0
    'PDFドキュメントを開いて表示する
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    '表紙のページ・オブジェクトを得る
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
    'ページに存在する注釈数を得る ★注意①
    lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
    Debug.Print "全注釈数=" & (lAnnotsCnt + 1)
    For j = 0 To lAnnotsCnt
        Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
        With objAcroPDAnnot
            If .GetSubtype = "Text" Then
                Debug.Print "Text(" & j & ")=" & .GetContents
                lTextCnt = lTextCnt + 1
            End If
        End With
    Next j
    Debug.Print "件数=" & lTextCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)
    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPDDoc = Nothing

End Sub

 

実行結果

★結果不良!★

TEST_PDAnnot_Contents:2008/08/05 20:42:34
全注釈数=4
Text(0)=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。(1)
Text(2)=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。(1)
件数=2

※下記はPDFビュアーの表紙ページの一部です。

PDF表紙ページに注釈

 

補足

  • 「★注意①」は動作不良を起こしている。

 

動作確認環境

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

 

戻る

「AcroExch.PDAnnot: GetContents メソッド」への16件のフィードバック

  1. 貴重な情報ありがとうございます。
    VBAでPDFの情報を取得できるなんて、すごいですね。注釈情報を取得して、集計などできそうです。
    早速やってみましたが、やっぱり注釈のテキスト情報がうまく取得できませんね。
    なんでだろう?
    もし、その後の進展等ありましたら、ぜひお教え下さい。

  2. 初めまして。
    「注釈情報を取得」に関してはうまく出来る時もあります。しかし出来ない時の確立が8割以上です。どうしてなのか原因がつかめません。
    でも、抜け道はあるかもしれないと思っています。PDDocオブジェクトのGetJsobjectメソッドです。OLE経由でAcrobat Java Script APIを使用できるメソッドです。Acrobat Java Script API本来の情報はSDKのjs_api_reference.pdfに記述されています。但し困った事にOLE経由でのコーディングの詳細に関しては書かれていません。
    今週中に一度チャレンジしてみます。GetJsobjectメソッド動作自身も不安要素を感じているので、期待は出来ないかもしれませんが。(汗

  3. (すいません名前入れ忘れました)
    早速ありがとうございます!
    そうなんです、全くできないのならまだしも、たまに取得できるから不思議です。
    >但し困った事にOLE経由でのコーディングの詳細に関しては書かれていません
    あらら、肝心なところがないんですね。
    うまくいくといいのですけど...

  4. sugiさん。
    朝から悪戦苦闘です。OLEから直接操作は無理かと・・(汗)。
    ならば、裏技の裏技でOLEからAcrobatのJavaコンソールにJava Scriptを貼り付けて実行させる。これならサンプルもあるし、既に体験済みです。
    しかし、・・・・、Acrobat Java Scriptをまだまだ未知の領域で、慣れるのに時間が少し掛かります。Java Script自身の文法等も知りませんが、今までの経験上、なんとかサンプルから作れます。※=読み取れる。
    まずは、AcrobatのJavaコンソール上でAcrobat Java Scriptを動かす初歩からの勉強?です。

  5. ありがとうございます!
    ご苦労様です。
    注釈のいろいろな操作はできるのに、
    肝心の注釈内容取得が困難とは、へんなの。どういったポリシーなんだろう。
    裏技の裏技!!
    そう言う手があるんですね。無理矢理だけど、そうするしかないのかぁ..

  6. >・・へんなの。どういったポリシーなんだろう
    A○obe社にはこのOLE機能に関するポリシーは存在しません。過去の遺物を仕方が無く提供している、って感じです。本当は便利なのですが、OLE自身の思想は過去の物なのでバージョン7?ぐらいから、あまり機能アップをしていません。Acrobatの機能アップにOLEが全く追いついていません。
    てな愚痴を言っていてもしょうが無いので、裏技?で対応を考えています。
    と、偉そうに言ってしまいましたが、調べているうちにその裏技も実現可能かが疑問に思えてきました。(汗
    もう少しAcrobat Java Scriptを調べて(=勉強して)、Excel VBAからOLE連携が出来るかテストしてみます。
    1週間は掛かるかな・・;。(激汗

  7. なるほど。
    ちゃんと使えると、便利ですよね。
    PDFをまた違った角度の発想で使えますしね。
    もったないいなぁ。
    研究がんばって下さい!

  8. ハハ、とうとう勉強がてらのメモ代わりにAcrobat JavaScriptサイトを別途立ち上げました。↓
    http://ac-javascript.jugem.jp/
    メモ帳代わりに使用しています。
    頭の中の整理と言った方がいいですネ。
    とりあえず、道の向きは決まりました。
    後はどう歩くか・・。

  9. いや、現在内容は乏しいです。
    恥ずかしいので見ないで下さい。(汗
    他の技術系HPの更新(バージョンアップ)で浮気状態。しばし停滞します。
    しかし、道は確かに見えてきました。
    あとはどのオブジェクトを使ってJavaScriptロジックを作るか。Acrobat JadaScriptはオブジェクト数が多い。

  10. Acrobat JavaScriptサイト拝見させていただきました。
    なかなか難しそうですねぇ。
    私は、組み込みほうほう自体がよくわからない状態(笑)です。
    冬休みの宿題にしまーす。

  11.  イベントの発生がうまくいかなくて、どうしようか考え込んでいます。OLEでPDFを開いたらイベント発生 -> Acrobat JavaScript作動と、予想していましたが、うまくいかず・・。PDFイベント処理は単独では出来るんですけどね。
     Acrobat v9.0の環境がやっと出来たので試そうかなと思っていますが、v9.0で出来ても意味無い様な気がします。
     今は別の技術系サイトの更新で少し頭を冷やしています。こうゆう時は時間を置くと何らかの案が浮かびます。
     そうですね。冬休みの宿題にしたいです。が、正月は家が忙しいので完全に冬休み状態です。年明けにして、しばらくして再開予定かな。
     

  12. こんにちは。
    すいません! 前回のコメントは私の冬休みの宿題でした。
    研究したのですが、難しいですね。
    PDF HACKSに載っていた方法は、WORDとPerlじゃ結果が違うし...
    と言うことで、Acrobat Proで注釈一覧をPDF出力して、xpdfでテキスト出力して、最後はExcelで1行づつ読み込んで加工。
    という、トホホな結果でした(笑)

  13.  ゲッ!、出来たんですか?
     ウウッ、xpdfという手があったのか。気がつかなかった。※追い越された!
     AcrobatでPDFを画面表示してPDF内のイベント発生でAcrobat JavaScriptを動作させて注釈一覧をテキスト出力する、までの方法は確定しました。
     しかし、・・。Acrobatのバージョン 8.1.3からPDFを画面表示できなくなっているバグを年末に発見しました。v9.0もダメでした。v7.0は画面表示出来ます。画面表示しないとイベントが発生しない!。下位バージョンのAcrobatで出来て、上位バージョンで出来ないので話にならないです。(涙
     一度、xpdfを試してみます。他のサイト更新が終わったら。(汗

  14. ありがとうございます。
    ありゃ~7.0迄ですかぁ....うー
    昨日の続きです。
    xpdfで出来たと思ったら、今日、会社の人から
    PDF-XChange Viewerを使う方法を教えてもらいました。
    PDF-XChange Viewerは、ビュワーのくせに(笑)注釈を独自形式ではき出すことが出来て、
    さらにこれをxmlとしてExcelで読むと....

  15. 「PDF-XChange Viewer」
    ↑これは当サイトでは使えな、い・・。
     自分で決めた事ですが、基本ポリシーは市販ソフトを使う、事なのです。企業向けエンジニアへの配慮からです。
     但し、一時的に使うツールと言う考え方では紹介出来ます。もう少し時間が出来たら「ツール一覧」という形で何らかの形にしたいとは考えています。検討中段階です。
    ※まだ他のサイト更新が終わらない。(汗

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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