AcroExch.PDTextSelect: GetText メソッド

TOP > AcroExch.PDTextSelect > GetText      [...]


説明

テキストが入った配列からインデックス指定でテキストを得ます。

テキストが入った配列はPDTextSelectオブジェクトです。

 

形式

BSTR GetText(long nTextIndex);

 

引数

  1. 第1引数(long nTextIndex) :
    テキストが入った配列のインデックスを指定する。
    最初は0。

 

戻り値

  • テキスト。

 

動作するバージョン

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ファイルの全テキストをテキストファイルに出力する。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
  • 以下のサンプルはGetNumTextメソッドのサンプルと同じです。

 

Sub AcroExch_PDTextSelect_GetText()

    Debug.Print "AcroExch_PDTextSelect_GetText:" & Now
    Dim objAcroApp          As New Acrobat.AcroApp
    Dim objAcroHiliteList   As New Acrobat.AcroHiliteList
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc        As Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDTextSelect As Acrobat.AcroPDTextSelect
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim lRet                As Long
    Dim lCnt                As Long
    Dim lPageCnt            As Long
    Dim i                   As Long
    Dim j                   As Long
    Dim strText             As String
    Dim lFileNo             As Long
    Dim lOutCnt             As Long
    
    'Acrobatを起動表示する
    lRet = objAcroApp.Show  '(TEST用)
    'PDFドキュメントを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    lPageCnt = objAcroPDDoc.GetNumPages - 1
    Debug.Print "全頁数 = " & (lPageCnt + 1)
    'ハイライトリストを作る。※「テキストのハイライト」では無い
    lRet = objAcroHiliteList.Add(0, 32767)
    
    '空きのファイル番号を取得
    lFileNo = FreeFile
    'テキストファイルをOPEN
    Open "C:¥List.txt" For Output As #lFileNo
    lOutCnt = 0
    
    For i = 0 To lPageCnt
        lRet = objAcroAVPageView.Goto(i)
        Set objAcroPDPage = objAcroAVPageView.GetPage()
        '単語、又は隣接する文字列単位でHiliteListの範囲に従って
        'PDTextSelectオブジェクトを作成する。
        Set objAcroPDTextSelect = _
            objAcroPDPage.CreateWordHilite(objAcroHiliteList)
        'AcroPDTextSelectオブジェクトに従って、
        '該当PDFページを選択状態にする。
        lRet = objAcroAVDoc.SetTextSelection _
                        (objAcroPDTextSelect)
        '選択状態した単語、又は隣接する文字列の数を取得する
        lCnt = objAcroPDTextSelect.GetNumText() - 1
        strText = ""
        For j = 0 To lCnt
            'Debug.Print objAcroPDTextSelect.GetText(j)
            '単語、又は隣接する文字列単位で抽出する
            '※空白文字は前の単語、又は隣接する文字列の最後となる
            strText = strText & objAcroPDTextSelect.GetText(j)
            If InStr(strText, vbCrLf) > 0 Then
                '改行コードを含んだ単語
                strText = Replace(strText, vbCrLf, "")
                'ファイルに出力する
                Print #lFileNo, strText
                strText = ""
                lOutCnt = lOutCnt + 1
            End If
        Next j
    Next i
    
    Debug.Print "出力行数 = " & lOutCnt
    '出力テキストファイルを閉じる。
    Close #lFileNo
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)

    'Acrobatを閉じる
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit

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

End Sub

 

実行結果

  

TEST_PDTextSelect_GetText:2008/07/31 21:47:23
全頁数 = 34
出力行数 = 956

※下記は実行途中のPDFビュアーの画面の一部です。透明テキストがページ全体選択状態になっています。

PDTextSelect:GetNumText メソッド実行途中

 

補足

  • 「隣接する文字列」の意味が分からなければ、
    空白又は改行を区切りとする連続する文字列と考えて下さい。
  • CreateWordHiliteメソッド、CreatePageHiliteメソッド、
    CreateTextSelectionメソッドも参考にして下さい。
  • ファイル出力しないで、Excel上に出力してもいいです。

 

動作確認環境

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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin