AcroExch.PDAnnot: GetContents メソッド

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


説明

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

形式

BSTR GetContents();

引数

  1. 無し。

戻り値

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

動作するバージョン

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_Contents() 002 003 Debug.Print "TEST_PDAnnot_Contents:" & Now 004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 005 Dim objAcroPDDoc As Acrobat.AcroPDDoc 006 Dim objAcroPDPage As Acrobat.AcroPDPage 007 Dim objAcroPDAnnot As Acrobat.AcroPDAnnot 008 Dim lRet As Long '戻り値 009 Dim lAnnotsCnt As Long '注釈数 010 Dim j As Long '添え字 011 Dim lTextCnt As Long '件数 012 013 lTextCnt = 0 014 'PDFドキュメントを開いて表示する 015 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "") 016 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc() 017 '表紙のページ・オブジェクトを得る 018 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0) 019 'ページに存在する注釈数を得る ★注意① 020 lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1 021 Debug.Print "全注釈数=" & (lAnnotsCnt + 1) 022 For j = 0 To lAnnotsCnt 023 Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j) 024 With objAcroPDAnnot 025 If .GetSubtype = "Text" Then 026 Debug.Print "Text(" & j & ")=" & .GetContents 027 lTextCnt = lTextCnt + 1 028 End If 029 End With 030 Next j 031 Debug.Print "件数=" & lTextCnt 032 033 'PDFファイルを保存しないで閉じる 034 lRet = objAcroAVDoc.Close(1) 035 'オブジェクトを強制解放する 036 Set objAcroAVDoc = Nothing 037 Set objAcroPDAnnot = Nothing 038 Set objAcroPDPage = Nothing 039 Set objAcroPDDoc = Nothing 040 041 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

 

実行結果

★結果不良!★

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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください