TOP > AcroExch.PDPage > CreatePageHilite [...]
説明
1文字単位の情報とそのリストをHiliteListオブジェクト情報からの範囲に従って、1ページのテキスト選択であるAcroPDTextSelectオブジェクトを作成する。
CreateWordHiliteメソッドとの違いはCreateWordHiliteは単語、又は隣接した文字列単位で扱う事。
※この説明では理解出来ないと思うのでCreateWordHiliteメソッドのサンプルも見て頂きたい。
当 CreatePageHilite の使用は控えて下さい。予期しない結果になる場合が有ります。CreateWordHilite を先に試して、それで目的の処理ができる場合は CreateWordHilite を使用して下さい。
形式
LPDISPATCH CreatePageHilite(LPDISPATCH iAcroHiliteList);
引数
- 第1引数(LPDISPATCH iAcroHiliteList) :
HiliteListオブジェクトは事前に範囲をAddメソッドで作成しておく。
戻り値
- Null以外 : 成功
- Null : 失敗
動作するバージョン
Version | Adobe Acrobat | 備考 |
---|---|---|
4 | - | Acrobat 4.0 ※Windows 98SE + Excel 2000 |
5 | - | Acrobat 5.0.5 |
6 | - | Acrobat 6.0.3 Pro |
7 | NO | Acrobat 7.1.4 Pro |
8 | OK 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を返す。
- - = 未確認。
- 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のイミディエイト画面の内容
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情報はそこを選択すると画面の様になる。
- 以下は実行中のテキスト選択中の画面。
補足
- 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
< 戻る >