none
PDF ファイル内の文字をテキストファイルに出力する方法の有無について RRS feed

  • 質問

  • いつもフォーラムお世話になります。表題の件、ご相談させてください。

    現在、社内のドキュメントはすべて PDF ファイルとして作成されていて、ファイル数は 100 以上にのぼります。

    このたび、これらの PDF ファイルに対して、文字検索を実施したり、文字情報を取得したりするアプリケーションを作成することになりました。

    このため、一旦 PDF ファイル自体をテキストファイルに変換、もしくは文字部分だけをテキストファイルに出力する(同じ事かもしれませんが…)

    .NET Framework のクラスやメソッドを調べていますが、芳しいものが見つかりません。

    どなたか情報をお持ちであればご教示いただけますでしょうか。どうぞ、よろしくお願いいたします。

    ※方法が無ければ、SendInput API を使い、キーボード操作でファイル数分、テキストファイルに出力する方法も思案中です…

    なお、文書のプロパティのセキュリティ タブの "内容のコピー" 項目は、すべてのファイルで "許可" となっています。

    実現するにあたって、極力サードパーティ製のコントロールやソフトは使用したくありません。

    2016年2月1日 13:16

回答

  • 実現するにあたって、極力サードパーティ製のコントロールやソフトは使用したくありません。

    .NET FrameworkクラスライブラリにはPDFに関する一切の機能は含まれていません。サードパーティ製を使用したくないとのことですのでそれを踏まえて…PDFの仕様は公開されていますので、1バイトずつ読み込み仕様に沿って解釈していけば実現できます。表示内容を完全に再現するのは大変でしょうが、文字列だけを抽出するのであればたいしたことないのではと思います。

    # 別に茶化しているわけではありません。私自身、PDFではありませんが同じAdobeから公開されているSWFについて独自の解析プログラムを作成しています。

    他の方法としてMicrosoft WordがPDFファイルの読み込みをサポートしているので、条件を満たすのであればこれを利用するのも一つの手かと。

    • 回答としてマーク yumi08 2016年2月2日 11:51
    2016年2月1日 13:38

すべての返信

  • 実現するにあたって、極力サードパーティ製のコントロールやソフトは使用したくありません。

    .NET FrameworkクラスライブラリにはPDFに関する一切の機能は含まれていません。サードパーティ製を使用したくないとのことですのでそれを踏まえて…PDFの仕様は公開されていますので、1バイトずつ読み込み仕様に沿って解釈していけば実現できます。表示内容を完全に再現するのは大変でしょうが、文字列だけを抽出するのであればたいしたことないのではと思います。

    # 別に茶化しているわけではありません。私自身、PDFではありませんが同じAdobeから公開されているSWFについて独自の解析プログラムを作成しています。

    他の方法としてMicrosoft WordがPDFファイルの読み込みをサポートしているので、条件を満たすのであればこれを利用するのも一つの手かと。

    • 回答としてマーク yumi08 2016年2月2日 11:51
    2016年2月1日 13:38
  • 佐祐理さん、いつもお返事ありがとうございます!返信が遅れてすみません。

    PDF を操作する .NET Framework のライブラリが用意されていないのであれば、佐祐理さんのおっしゃる通り、ファイルをオープンして読み込みながら判断するロジックを C で書いてみようと思います。

    SendInput API を使ってキーを送る案はそれより簡単ですが、メニューのショートカットに変更があると正しく動作しなくなる可能性があるので、やめます。

    情報をありがとうございました。

    2016年2月2日 12:05