TOP > AcroExch.PDTextSelect > GetBoundingRect [...]
説明
テキスト選択状態になっている四方位置情報(AcroRectオブジェクト:Top,Bottom,Left,Right)を得ます。
形式
LPDISPATCH GetBoundingRect();
引数
- 無し。
戻り値
- AcroRectオブジェクトに位置情報が返される。
動作するバージョン
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 | OK | 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ファイルの2ページ目から指定テキストを選択状態にする。そして抽出する。
- F8キーでステップ実行しながら動作確認する。
- 事前に参照設定をする。
001 Sub AcroExch_PDPage_GetBoundingRect()
002
003 Debug.Print "TEST_PDPage_GetBoundingRect:" & Now
004 Dim objAcroApp As New Acrobat.AcroApp
005 Dim objAcroHiliteList As New Acrobat.AcroHiliteList
006 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
007 Dim objAcroPDPage As Acrobat.AcroPDPage
008 Dim objAcroPDTextSelect As Acrobat.AcroPDTextSelect
009 Dim objAcroAVPageView As Acrobat.AcroAVPageView
010 Dim objAcroRect As Acrobat.AcroRect
011 Dim lRet As Long
012 Dim lCnt As Long
013 Dim j As Long
014 Dim strText As String
015
016 'PDFドキュメントを開いて表示する。
017 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
018 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
019 '2ページ目に移動表示する。
020 lRet = objAcroAVPageView.Goto(1)
021 'ハイライトリストを作る。※「テキストのハイライト」では無い
022 '※10文字目から、50文字のハイライトリストを作る。
023 lRet = objAcroHiliteList.Add(10, 50)
024
025 '検索して見つかったページのAVPageViewオブジェクトを作成
026 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
027 '検索して見つかったページのPDPageオブジェクトを作成
028 Set objAcroPDPage = objAcroAVPageView.GetPage()
029 '1文字単位で文字をHiliteListの範囲に従って
030 'PDTextSelectオブジェクトを作成する。
031 Set objAcroPDTextSelect = _
032 objAcroPDPage.CreatePageHilite(objAcroHiliteList)
033 'AcroPDTextSelectオブジェクトに従って、
034 '該当PDFページを選択状態にする。
035 lRet = objAcroAVDoc.SetTextSelection(objAcroPDTextSelect)
036
037 '抽出した文字列の数(Index)を取得する
038 lCnt = objAcroPDTextSelect.GetNumText() - 1
039 strText = ""
040 For j = 0 To lCnt
041 '単語,又は隣接単位で抽出する
042 strText = strText & objAcroPDTextSelect.GetText(j)
043 Next j
044 Debug.Print strText
045
046 '選択状態になっている四方範囲(AcroRect)を取得する。
047 Set objAcroRect = objAcroPDTextSelect.GetBoundingRect
048 With objAcroRect
049 Debug.Print "Rect.Top=" & .Top
050 Debug.Print "Rect.bottom=" & .bottom
051 Debug.Print "Rect.Left=" & .Left
052 Debug.Print "Rect.Right=" & .Right
053 End With
054
055 Skip:
056 'PDFファイルを保存しないで閉じる
057 lRet = objAcroAVDoc.Close(1)
058
059 'Acrobatを閉じる
060 lRet = objAcroApp.Hide '(TEST用)
061 lRet = objAcroApp.Exit '(TEST用)
062
063 'オブジェクトを強制解放する
064 Set objAcroHiliteList = Nothing
065 Set objAcroRect = Nothing
066 Set objAcroPDPage = Nothing
067 Set objAcroPDTextSelect = Nothing
068 Set objAcroAVPageView = Nothing
069 Set objAcroAVDoc = Nothing
070 Set objAcroApp = Nothing
071
072 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
TEST_PDPage_GetBoundingRect:2008/08/02 9:28:24
Adobe Systems Incorporated. All rights reserved.
Adobe
Rect.Top=751
Rect.bottom=724
Rect.Left=36 ※左
Rect.Right=245 ※右
※下記は実行途中のPDFビュアーの画面の一部です。
透明テキストが選択状態になっています。

補足
- AcroRectオブジェクトは以下の選択された文字列の位置情報を示していると推測される。
- CreateWordHiliteメソッド、CreatePageHiliteメソッド、
CreateTextSelectionメソッドも参考にして下さい。
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >
はじめまして、いくおと申します。
AcrobatをVBAで操作したいと考え、ここにたどり着きました。本当に解説があり、大変参考になってます。PDFにある表をコピペしたいと考えていますが、以下プロセスは可能でしょうか。
コピーしたい表の範囲は、「比較表」と書かれてありその文字の背景色が赤色になっている部分がスタート。範囲の最後は、※○○と書かれています。
比較表を検索してRect.top、Rect.Leftを取得、※○○を検索してRect.bottom、Rect.Rightというプロセスになるのではと思ってますが、「比較表」と書かれてある文字は表の最初の部分に書かれているとは限らず、背景色で判別する必要があると思っています。
選択した範囲の背景色を取得するメソッドはあるのでしょうか。
いくおさん。初めまして。
>選択した範囲の背景色を取得するメソッドはあるのでしょうか。
残念ですが、該当するメソッドは有りません。
注釈オブジェクトは色の判定が出来ますが、上記とは無関係です。
何かPDFに別のキーワードを人為的に追加するか、
PDF化する前に何らかのキーワード化するか。※多分既存PDFでしょう
再度、発想の転換をして、
何らかの犠牲を元に考え直す事をお勧めします。
管理人様
アドバイス頂き、ありがとうございます。そういうメソッドはないのですね。発想を転換することにします。