AcroExch.PDAnnot: GetSubtype メソッド

TOP > AcroExch.PDAnnot > GetSubtype      [...]


説明

注釈のタイプを得ます。

タイプは Text , Popup , Link , Highlight の4種類です。

形式

BSTR GetSubtype();

引数

  1. 無し。

戻り値

  • Text , Popup , Link , Highlight の文字列のどれかを返します。

動作するバージョン

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
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キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

注意) 以下サンプルは "Highlight" 処理が抜けています。追加で使用して下さい。

001 Sub AcroExch_PDAnnot_GetSubtype() 002 003 Debug.Print "TEST_PDAnnot_GetSubtype:" & 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 lAnnotsCnt As Long '注釈数 009 Dim lTextCnt As Long '件数 010 Dim lRet As Long '戻り値 011 Dim j As Long '添え字 012 Dim lText As Long 013 Dim lPopUp As Long 014 Dim lLink As Long 015 Const CON_PAGE = 0 'ページ番号 016 017 lTextCnt = 0 018 lText = 0 019 lPopUp = 0 020 lLink = 0 021 'PDFドキュメントを開いて表示する 022 lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "") 023 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc() 024 '2頁目のページ・オブジェクトを得る ★注意① 025 Set objAcroPDPage = _ 026 objAcroPDDoc.AcquirePage(CON_PAGE) 027 Debug.Print "頁=" & CON_PAGE 028 'ページに存在する注釈数を得る ★注意② 029 lAnnotsCnt = objAcroPDPage.GetNumAnnots()1 030 Debug.Print "全注釈数=" & (lAnnotsCnt + 1) 031 For j = 0 To lAnnotsCnt 032 Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j) 033 With objAcroPDAnnot 034 Debug.Print "(" & j & ")GetSubtype=" & _ 035 .GetSubtype 036 Debug.Print " GetContents=" & _ 037 .GetContents 038 Select Case .GetSubtype 039 Case "Text": lText = lText + 1 040 Case "Popup": lPopUp = lPopUp + 1 041 Case "Link": lLink = lLink + 1 042 Case Else: MsgBox "Program Error(" & _ 043 .GetSubtype & ")" 044 End Select 045 End With 046 lTextCnt = lTextCnt + 1 047 Next j 048 Debug.Print "Text =" & lText & " 件" 049 Debug.Print "Popup =" & lPopUp & " 件" 050 Debug.Print "Link =" & lLink & " 件" 051 Debug.Print "全件数=" & lTextCnt & " 件" 052 053 'PDFファイルを保存しないで閉じる 054 lRet = objAcroAVDoc.Close(1) 055 'オブジェクトを強制解放する 056 Set objAcroAVDoc = Nothing 057 Set objAcroPDAnnot = Nothing 058 Set objAcroPDPage = Nothing 059 Set objAcroPDDoc = Nothing 060 061 End Sub

実行結果(1)  頁=1の時、異常処理

TEST_PDAnnot_GetRect:2008/08/12 12:51:16
頁=0
全注釈数=4
(0)GetSubtype=Text
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(1)GetSubtype=Popup
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(2)GetSubtype=Text
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
(3)GetSubtype=Popup
GetContents=1/2 これはTest01.PDFのテスト用の1ページ目のテキスト注釈です。
Text =2 件
Popup =2 件
Link =0 件
全件数=4 件

※上記PDFページは以下の様になっている。
2番目の注釈が表示されてない。

PDAnnot:GetSubtype メソッド(1)

実行結果(2)  頁=3の時、異常処理

TEST_PDAnnot_GetRect:2008/08/12 12:39:57
頁=2
全注釈数=41
(0)GetSubtype=Link
GetContents=
(1)GetSubtype=Link
GetContents=
(2)GetSubtype=Link
GetContents=
(3)GetSubtype=Link
GetContents=
・・・・・・・<省略>・・・・・・・
(39)GetSubtype=Link
GetContents=
(40)GetSubtype=Link
GetContents=
Text =0 件
Popup =0 件
Link =41 件
全件数=41 件

※上記PDFページは以下の様になっている。
注釈が1つ表示されてない。

PDAnnot:GetSubtype メソッド(2)

補足

  • 「★注意①」と「★注意②」の部分が動作不良を起こしている模様です。
    正確に処理できません。
     

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003
  • Windows 10 64Bit Pro +
    Acrobat XI Pro + Office 2007 

戻る

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

  1. 貴重な情報提供ありがとうございます。まだまだ実態確認の途中ですが、気づいたことを書いておきます。

    1.Acrobat上の挿入操作1つにつき、データでは2つの注釈(Popup型 + 選択それぞれ)が挿入される
    「選択それぞれ」の部分は通常のノート注釈であればTextタイプ、テキスト注釈(PDFのテキストデータに対する注釈挿入)であればCaretです。Acrobat8の注釈ツールバーで挿入できるもので試してみたところ、全てこの形で入っています。このためGetNumAnnots()が期待する数字の2倍で返ります。
    鉛筆ツールでテキストを入れなかった場合などでも空のPopupデータが作られます。タイプには鉛筆ツールがInk, 雲がPolygonなど多くの型があります。

    2.注釈を取得する際にはPDPageを格納した変数からではなく
    objAcroPDDoc.AcquirePage(i).GetAnnot(j)で取得するようにし、また、すぐ次のループで代入があるとしても、一旦PDAnnot変数にNothingを入れておくと安定するようです。

    お役に立てば幸いです。

    蛇足ですが、貴ブログのコードを流用させていただく時に、FireFoxで表示してVBエディタにコピペすると、マイナス記号がマイナス記号2連続に化けるようです。貼り付け先がメモ帳などの場合には問題ありません。プログラミング初心者はあまり見にこない記事と思いますが一応。

  2. のりさん。初めまして。

    タイプにInkとPolygonの型がある事を初めて知りました。
    「・・一旦PDAnnot変数にNothingを入れておくと安定・・」は視点を変えたやり方で嬉しいです。
    この手の情報はネットでもあまり扱ってなかったので助かります。

    現在は待ち作業が一杯一杯なので時間が出来ましたら、何らかの形で反映させたいと思います。
    情報提供、ありがとうございます。

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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