PDFをテキストに変換する方法(Excel VBAサンプル)

TOP > サンプル / 関数 > *      [...]


Method of conversion from PDF to Text.

 

説明

 

PDFをテキストに変換しファイル出力を行います。

2種類の形式でテキスト出力するサンプルです。

 

サンプル:ExcelのVBA

 

  • F8キーでステップ実行しながら動作確認出来ます。
  • 事前に参照設定もして下さい。

 

Option Explicit

Sub CommandButton21_Click()

    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc    As Acrobat.AcroPDDoc
    Dim lRet            As Long
    Dim jso             As Object

    'Acrobatアプリケーションを起動する。
    lRet = objAcroApp.Show
    'PDFファイルを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥save_as_xml.pdf", "")
    'PDDocオブジェクトを取得する
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    'JavaScriptオブジェクトを作成する。
    Set jso = objAcroPDDoc.GetJSObject

    'PDFをアクセステキスト(accesstext)に変換する。
    jso.SaveAs "E:¥test-01A.txt", "com.adobe.acrobat.accesstext"
    'PDFをプレーンテキスト(plain-text)に変換する。
    jso.SaveAs "E:¥test-01P.txt", "com.adobe.acrobat.plain-text"

    'PDFファイルを閉じます。
    lRet = objAcroAVDoc.Close(1)
    'Acrobatアプリケーションを終了する。
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit
    'OLEを行うとAcrobatが不安定になるので
    '一応オブジェクトを強制開放する。
    Set objAcroPDDoc = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing

End Sub

 





 

補足

 

  1. Acrobat Readerでは出来ません。
    Acrobat本体がデフォルトでインストールされているパソコン環境だけです。
  2. accesstext(アクセステキスト):
    PDFに透明テキスト文字列があればテキスト変換されます。
    改行があれば、その位置で改行してテキスト出力されます。
  3. plain-text(プレーンテキスト):
    PDFの透明テキスト文字列があればテキスト変換されます。
    改行コードは無視されます。
    よって、2行が1行につながってテキスト出力され、文章としては読みずらいです。
    ページによってはテキストに変換されない場合もあります。
    この仕様は不明です。
    Acrobat SDK 8.1にある「Extending the Acrobat SaveAsXML Plug-in」save_as_xml.pdf の場合は2ページ目の内容がテキストの最後に変換されてテキスト出力されます。
    この形式に変換する目的も機能も当サイト管理者には理解出来ません。
  4. 上記サンプルでは objAcroApp.Show でAcrobatアプリ本体を起動表示しています。
    これはjso.SaveAs メソッドを連続で行うときに発生する不可解なエラー回避策です。
    高速化したいのならば objAcroApp.CloseAllDocs に置き換えて下さい。
  5. 当サンプルよりも以下の関数を利用してのテキスト変換をおすすめします。
    関数:PDFを特定のフォーマットに変換する
    当ページのサンプルよりも安全にテキスト変換が可能になります。

 

注意

 

  1. Acrobat SDK 8.1 に書かれているSaveAsメソッドの第2引数の説明が一部間違っています。
    以下が正解です。
    SDK:com.adobe.Acrobat.accesstext ※間違い
    SDK:com.adobe.Acrobat.plain-text ※間違い
    正解:com.adobe.acrobat.accesstext ※「a」1文字違う
    正解:com.adobe.acrobat.plain-text ※「a」1文字違う
    この情報は、"C:¥Program Files¥Adobe¥Acrobat 8.0¥Acrobat¥ExportTask.xml"ファイルに入っている内容から当サイト管理者が勝手に判断したものです。
    この「ExportTask.xml」ファイルに関する説明はAcrobat SDKにはありません。
  2. 当サイト作成「Acrobat SDK:正誤表」も参考にして下さい。
  3. OSがインストールされているC:ドライブへの保存は出来ません
    詳細は、「Acrobat JavaScript における「Safe Path」についての注意事項」を参照。

 

動作確認環境

 

  • WindowsXP Pro + SP3 +
    Acrobat 8.1.6 Pro + Office 2003 + フルMicrosoftUpdate

 

サンプル一覧

「PDFをテキストに変換する方法(Excel VBAサンプル)」への6件のフィードバック

  1. 初めてメールします。アクロバットプロ11で大量のTIFファイルをPDF化しOCRをかけようとしています。アクションウィザードを使えば、一つのフォルダーの中にある全てのファイルに対し、上記の処理はできます。ところが、なぜか、OCRができないファイルがあるために、そこで、ファイルが開いたまま止まってしまいます。原因はよくわかりません。そこで、VBAでOCRをかけ、もしも、30分以上、かかってもOCRが終了しない場合は、とっとと、次のファイルのOCRをするようなプログラムを組めないかと思っています。あるいは、もっと、良い手軽かもしれませんが、教えてください。よろしくお願いいたします。

  2. 倉崎 さん。
    はじめまして。

    VBA等の言語に関係無く、AcrobatのOCR機能部分をプログラミング操作できる命令等の部分は見つかりません。
    アクションウイザードの処理部分もプログラミング操作等が出来ないかと再調査しましたが、出来ないと、言うより出来る方法が見つかりませんでした。
    OCR処理でフリーズ?した場合にスキップ処理をさせたいという部分は理解できますが。

    TIFからPDFへ変換して、そのPDF上の文字画像をテキスト化をするにはAcrobat以外に選択肢は無いでしょう。
    唯一知っているPDFのテキスト化ソフトに「読んde!!ココ」が有りますが、2012年9月30日を持って当ソフトは販売終了となりました。
    ※今でも大事に使ってますが(汗
    「読取革命」と言うOCRソフトも有るらしいですが使った事を無いので仕様等は不明です。

    何か倉崎さんの助けになる様な情報を思案しましたが、見つかりません。
    残念です。

  3. 倉崎 さんへ。

    前のコメントで「見つからない」と返答しましたが・・・。

    以前から検討していた事が有り、現在はその手段が見つかっています
    と言っても「出来る」かはテストして見ないと分かりません。

    1ヶ月前からのテストで、Acrobat 10 以下のバージョンのアクション処理(バッチ処理)のプログラミング操作が可能な状態になっています。
    現在はその手法のドキュメント化(HTML)作業を行っています。
    それと同じ手法を使えばOCRの起動と稼働の監視が可能かもしれません。

    但し、Acrobat 11 に関してはアクション処理自体の仕様が下位バージョンと基本的に変わっているので、手法は同じですがプログラミング操作に関しては再検討(再作成)する必要が有る状態です。

    この内容が伝わる事を祈っています。

  4. いろいろとアドバイスありがとうございます。
    取り急ぎ、お礼を申し上げます。
    いろいろと試してみます。
    また、よろしくお願いいたします。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin