AcroExch.PDPage: CreatePageHilite メソッド

TOP > AcroExch.PDPage > CreatePageHilite      [...]


説明

1文字単位の情報とそのリストをHiliteListオブジェクト情報からの範囲に従って、1ページのテキスト選択であるAcroPDTextSelectオブジェクトを作成する。

CreateWordHiliteメソッドとの違いはCreateWordHiliteは単語、又は隣接した文字列単位で扱う事。

※この説明では理解出来ないと思うのでCreateWordHiliteメソッドのサンプルも見て頂きたい。

当 CreatePageHilite の使用は控えて下さい。予期しない結果になる場合が有ります。CreateWordHilite を先に試して、それで目的の処理ができる場合は CreateWordHilite を使用して下さい。

形式

LPDISPATCH CreatePageHilite(LPDISPATCH iAcroHiliteList);

引数

  1. 第1引数(LPDISPATCH iAcroHiliteList) :
    HiliteListオブジェクトは事前に範囲をAddメソッドで作成しておく。

戻り値

  • Null以外 : 成功
  • Null : 失敗

動作するバージョン

VersionAdobe
Acrobat
備考
4-Acrobat 4.0 ※Windows 98SE + Excel 2000
5
-
Acrobat 5.0.5
6
-
Acrobat 6.0.3 Pro
7NOAcrobat 7.1.4 Pro
8OK
NO
Acrobat 8.1.2 Pro
Acrobat 8.2.3 Pro
9-Acrobat 9.3.3 Extended
10-Acrobat X (10.1.8) Extended
11-Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。
  1. CreatePageHiliteメソッドを実行するには、その前にHiliteListオブジェクトのAddメソッドが実行出来ないと駄目です。
    よって、Acrobat v7.1.4 と Acrobat v8.2.3 では使えません。
    但し、Acrobat v8.1.2 では使えます。現在、この環境(Acrobat v8.1.2)は無いので再テストはしていません。

サンプル:Excel のVBA

説明: 文字列を検索し、見つかったページの最初の21文字めから100文字目の内容をテキスト選択状態で画面表示する。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
  • テストする時は出来るだけテキストを沢山含んだページを対象にする。
001 Sub AcroExch_PDPage_CreatePageHilite() 002 003 '検索文字列 004 Const KensakuText As String = "agreement" 005 006 Dim objAcroApp As New Acrobat.AcroApp 007 Dim objAcroHiliteList As New Acrobat.AcroHiliteList 008 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 009 Dim objAcroPDPage As Acrobat.AcroPDPage 010 Dim objAcroPDTextSelect As Acrobat.AcroPDTextSelect 011 Dim objAcroAVPageView As Acrobat.AcroAVPageView 012 Dim objAcroRect As Acrobat.AcroRect 013 Dim lRet As Long 014 Dim lCnt As Long 015 Dim j As Long 016 Dim strText As String 017 018 'PDFドキュメントを開いて表示する。 019 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "") 020 'PDFドキュメントの先頭ページから文字列検索する。 021 ' 第2引数:大文字小文字の区別無し 022 ' 第3引数:単語単位の検索無し 023 ' 第4引数:最初のページから検索する 024 lRet = objAcroAVDoc.FindText(KensakuText, False, False, True) 025 If lRet = False Then 026 '検索出来なかった 027 Debug.Print "Not Found =(" & KensakuText & ")" 028 GoTo Skip: 029 End If 030 'ハイライトリストを作る。※「テキストのハイライト」では無い 031 lRet = objAcroHiliteList.Add(20, 100) 032 033 '検索して見つかったページのAVPageViewオブジェクトを作成 034 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView() 035 '検索して見つかったページのPDPageオブジェクトを作成 036 Set objAcroPDPage = objAcroAVPageView.GetPage() 037 '1文字単位で文字をHiliteListの範囲に従って 038 'PDTextSelectオブジェクトを作成する。 039 Set objAcroPDTextSelect = _ 040 objAcroPDPage.CreatePageHilite(objAcroHiliteList) 041 'AcroPDTextSelectオブジェクトに従って、 042 '該当PDFページを選択状態にする。 043 lRet = objAcroAVDoc.SetTextSelection(objAcroPDTextSelect) 044 045 '抽出した文字列の数(Index)を取得する 046 lCnt = objAcroPDTextSelect.GetNumText() - 1 047 strText = "" 048 For j = 0 To lCnt 049 Debug.Print objAcroPDTextSelect.GetText(j) 050 '単語単位で抽出する 051 strText = strText & objAcroPDTextSelect.GetText(j) 052 Next j 053 Debug.Print "" 054 Debug.Print strText 055 Debug.Print "" 056 057 '選択状態になっている四方範囲(AcroRect)を取得する。 058 Set objAcroRect = objAcroPDTextSelect.GetBoundingRect 059 With objAcroRect 060 Debug.Print "Rect.Top=" & .Top 061 Debug.Print "Rect.bottom=" & .bottom 062 Debug.Print "Rect.Left=" & .Left 063 Debug.Print "Rect.Right=" & .Right 064 End With 065 066 Debug.Print "" 067 Skip: 068 'PDFファイルを保存しないで閉じる 069 lRet = objAcroAVDoc.Close(1) 070 071 'Acrobatを閉じる 072 lRet = objAcroApp.Hide '(注1) 073 lRet = objAcroApp.Exit '(注1) 074 075 'オブジェクトを強制解放する 076 Set objAcroHiliteList = Nothing 077 Set objAcroPDPage = Nothing 078 Set objAcroPDTextSelect = Nothing 079 Set objAcroAVPageView = Nothing 080 Set objAcroRect = Nothing 081 Set objAcroAVDoc = Nothing 082 083 End Sub 084


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

実行結果

※以下はExcelのイミディエイト画面の内容

Source file Incorporated. All rights reserved. Adobe R Acrobat R SDK 8.0 Developing Applications Using Interapplication Incorporated. All rights reserved. AdobeR AcrobatR SDK 8.0 Developing Applications Using Interapplication Rect.Top=751 Rect.bottom=724 Rect.Left=36 Rect.Right=309

 

サンプルの内容、及び結果の解説

  • Acrobat、又はAcrobat Readerで文字列を選択状態にしてみると分かるが、単語や隣接する文字列の途中から選択状態にする事は出来ない。必ず、単語や隣接する文字列全体が選択状態になる。よってHiliteListオブジェクトで指定した範囲が完全に実行される訳ではない。何文字がオーバーする。HiliteListオブジェクトは100文字を指定しているが、選択状態になっている文字数は104。
  • PDTextSelectオブジェクトのGetNumTextメソッドはCreatePageHiliteメソッドの影響は得ないで単語単位の件数を出す。
  • AcroRect情報はそこを選択すると画面の様になる。
  • 以下は実行中のテキスト選択中の画面。
    CreatePageHilite メソッド : テキスト選択状態

補足

  • F8キーでステップ実行し、各メソッドによりどのような動きをするかよく観察すること。
  • (注1)はテスト用のロジック。

動作確認環境

  • Windows98SE( + WindowsUpdate)
    + Acrobat 4.0 + Office 2000
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 5.0.5 + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 6.0.3 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 7.1.4 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 8.1.2 Pro + Office 2003( + SP3)  *
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 8.2.3 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 9.3.3 Extended + Office 2003( + SP3)

Adobe Web 解説 URL(英語) v9.1

  • http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/IAC_API_OLE_Objects.103.131.html

戻る

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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