2011-12-09 17 views
7

ITextSharpまたはPDFBoxを使用するpdfファイルからテキストを抽出する例を見てきました。 PDFBoxは、テキストを抽出するのに最も信頼性の高い方法であるようですが、多くの追加ステップが必要です。.Net用のPDFBoxを構築する方法

私は、hereという命令を使ってDLLを構築しようとしましたが、.Net用に必要なファイルを正しくビルドする方法がわかりません。

私はかなり失われています。誰かがステップインバイステップで "Dummiesの.NetアプリケーションにPDFBoxを含める"ことができますか?

+0

これはJavaとluceneにどのように関連していますか? – Manish

+2

PDFBoxはJavaで書かれており、Luceneと組み合わせて使用​​されることがよくあります。私は、.NETでJavaアプリケーションをIKVMを使用して使用しようとしています。 – SharpBarb

答えて

21

私はついにそれを働かせました。私は実際の例を得るために私が従った手順を概説しました。私は誰かがこれが助けになると願っています

ダウンロードJava JDK
ダウンロードIKVM 0.42.0.6
ダウンロードPDFBox 1.6.0-src.zip

Ant Manualは参考になりました。

私は自分の名前を短くするAntとPDFBoxフォルダの名前を変更し、それらに私のCに移動:セットアップにあなたが持っているドライブ

ご使用の環境変数を。 (Windows 7) マイコンピュータ - >プロパティ - >高度なシステム設定 - >環境変数を右クリックして

私は以下の設定を使用しましたが、Javaをインストールした場所とAntとPDFを置く場所によって異なりますボックスフォルダ。

 
Variable Value 
ANT_HOME C:\apache-ant\ 
JAVA_HOME C:\Program Files (x86)\Java\jdk1.7.0_01 
Path  ;C:\apache-ant\bin\  (Append semi-colon and path) 

一度それが行わ上のすべてのものが正しく設定されている場合は、コマンドウィンドウで「蟻」のタイプは、あなたが「build.xmlのは存在しません!」というメッセージを取得する必要があります。

「pdfbox-1.6.0 \ pdfbox」フォルダ内のbuild.xmlファイルを編集します。 の行を検索「。」を「Your IKVM Folder Path」に置き換えます。

私は「C:\ IKVM」にIKVMを移動:「C:\のpdfbox-1.6.0 pdfbox \「に

コマンド・ウィンドウを開き、CDの私のように見えるように 『アリ』と入力

...そして奇跡が起こる。

新しいフォルダの束が今pdfboxフォルダ内に存在する必要があります。必要なDLL年代は、binフォルダにある。私はなぜ知らないが、私は「-snapshot」を得ましたすべてのファイルの終わり(pdfbox-1.6.0-SNAPSHOT.dll)

IKVM.GNU.Classpath(IKVM.OpenJDK.Classpathとも呼ばれます)は存在しません。0.40のリリース以降にモジュール化されました。現在は、いくつかのIKVM.OpenJDK dllの形式で利用できます。あなたはそれらのいくつかが必要です。

あなたのVisual C#プロジェクトのbinフォルダのbinフォルダにpdfBox binフォルダからVisual StudioのC#

コピーでこれらのファイルを新しいプロジェクトを作成します。

 
pdfbox-1.6.0-SNAPSHOT.dll 
fontbox-1.6.0-SNAPSHOT.dll 
commons-logging.dll 

コピーし、これらのファイルのiKVMビンからお使いのVisual C#プロジェクトのbinフォルダのbinフォルダにフォルダ:

 
IKVM.OpenJDK.Core.dll 
IKVM.OpenJDK.SwingAWT.dll 
IKVM.OpenJDK.Text.dll 
IKVM.OpenJDK.Util.dll 
IKVM.Runtime.dll 

がIKVM DLLの上記に参照を追加し、プロジェクトをビルド。

pdfbox dllへの参照を追加し、再度プロジェクトをビルドします。

これでコードを書く準備が整いました。以下の簡単な例では、入力PDFから素敵なテキストファイルを作成しました。

using System; 
using System.IO; 

using org.apache.pdfbox.pdmodel; 
using org.apache.pdfbox.util; 

namespace testPDF 
{ 
class Program 
{ 
    static void Main() 
    { 
     PDFtoText pdf = new PDFtoText(); 

     string pdfText = pdf.parsePDF(@"C:\Sample.pdf"); 

     using (StreamWriter writer = new StreamWriter(@"C:\Sample.txt")) 
     { writer.Write(pdfText); } 

    } 

    class PDFtoText 
    { 
     public string parsePDF(string filepath) 
     { 
      PDDocument document = PDDocument.load(filepath); 
      PDFTextStripper stripper = new PDFTextStripper(); 
      return stripper.getText(document); 
     } 

    } 
} 

} 
+1

OCRレイヤーからテキストを読み込むためにIKVM.OpenJDK.Text.dllも必要であることを理解しました – SharpBarb

+0

Antは推奨されなくなり、Mavenに置き換えられました。 [詳細はこちら](http://pdfbox.apache.org/building.html)。 – basiphobe

+0

あなたの優しい説明をありがとう。誰かがこの便利な記事を紹介しましたが、私はJavaと完全に関連していません。あなたの偉大な仕事を願って! –

関連する問題