AcroExch.PDTextSelect: GetBoundingRect メソッド

TOP > AcroExch.PDTextSelect > GetBoundingRect      [...]


説明

テキスト選択状態になっている四方位置情報(AcroRectオブジェクト:Top,Bottom,Left,Right)を得ます。

 

形式

LPDISPATCH GetBoundingRect();

 

引数

  1. 無し。

 

戻り値

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

 

Sub AcroExch_PDPage_GetBoundingRect()

    Debug.Print "TEST_PDPage_GetBoundingRect:" & Now
    Dim objAcroApp          As New Acrobat.AcroApp
    Dim objAcroHiliteList   As New Acrobat.AcroHiliteList
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDTextSelect As Acrobat.AcroPDTextSelect
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim objAcroRect         As Acrobat.AcroRect
    Dim lRet                As Long
    Dim lCnt                As Long
    Dim j                   As Long
    Dim strText             As String
    
    'PDFドキュメントを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    '2ページ目に移動表示する。
    lRet = objAcroAVPageView.Goto(1)
    'ハイライトリストを作る。※「テキストのハイライト」では無い
    '※10文字目から、50文字のハイライトリストを作る。
    lRet = objAcroHiliteList.Add(10, 50)
    
    '検索して見つかったページのAVPageViewオブジェクトを作成
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    '検索して見つかったページのPDPageオブジェクトを作成
    Set objAcroPDPage = objAcroAVPageView.GetPage()
    '1文字単位で文字をHiliteListの範囲に従って
    'PDTextSelectオブジェクトを作成する。
    Set objAcroPDTextSelect = _
        objAcroPDPage.CreatePageHilite(objAcroHiliteList)
    'AcroPDTextSelectオブジェクトに従って、
    '該当PDFページを選択状態にする。
    lRet = objAcroAVDoc.SetTextSelection(objAcroPDTextSelect)
    
    '抽出した文字列の数(Index)を取得する
    lCnt = objAcroPDTextSelect.GetNumText() - 1
    strText = ""
    For j = 0 To lCnt
        '単語,又は隣接単位で抽出する
        strText = strText & objAcroPDTextSelect.GetText(j)
    Next j
    Debug.Print strText
    
    '選択状態になっている四方範囲(AcroRect)を取得する。
    Set objAcroRect = objAcroPDTextSelect.GetBoundingRect
    With objAcroRect
        Debug.Print "Rect.Top=" & .Top
        Debug.Print "Rect.bottom=" & .bottom
        Debug.Print "Rect.Left=" & .Left
        Debug.Print "Rect.Right=" & .Right
    End With

Skip:
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)

    'Acrobatを閉じる
    lRet = objAcroApp.Hide      '(TEST用)
    lRet = objAcroApp.Exit      '(TEST用)

    'オブジェクトを強制解放する
    Set objAcroHiliteList = Nothing
    Set objAcroRect = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPDTextSelect = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing

End Sub

 

実行結果

  

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ビュアーの画面の一部です。

透明テキストが選択状態になっています。

PDTextSelect:GetBoundingRect メソッド実行中画面

 

補足

 

動作確認環境

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

 

戻る

「AcroExch.PDTextSelect: GetBoundingRect メソッド」への3件のフィードバック

  1. はじめまして、いくおと申します。

    AcrobatをVBAで操作したいと考え、ここにたどり着きました。本当に解説があり、大変参考になってます。PDFにある表をコピペしたいと考えていますが、以下プロセスは可能でしょうか。

    コピーしたい表の範囲は、「比較表」と書かれてありその文字の背景色が赤色になっている部分がスタート。範囲の最後は、※○○と書かれています。

    比較表を検索してRect.top、Rect.Leftを取得、※○○を検索してRect.bottom、Rect.Rightというプロセスになるのではと思ってますが、「比較表」と書かれてある文字は表の最初の部分に書かれているとは限らず、背景色で判別する必要があると思っています。

    選択した範囲の背景色を取得するメソッドはあるのでしょうか。

  2. いくおさん。初めまして。

    >選択した範囲の背景色を取得するメソッドはあるのでしょうか。

    残念ですが、該当するメソッドは有りません。
    注釈オブジェクトは色の判定が出来ますが、上記とは無関係です。

    何かPDFに別のキーワードを人為的に追加するか、
    PDF化する前に何らかのキーワード化するか。※多分既存PDFでしょう

    再度、発想の転換をして、
    何らかの犠牲を元に考え直す事をお勧めします。

  3. 管理人様

    アドバイス頂き、ありがとうございます。そういうメソッドはないのですね。発想を転換することにします。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン