2011-12-09 12 views
7

Widziałem przykłady ekstrakcji tekstu z plików PDF, które używają ITextSharp lub PDFBox. PDFBox wydaje się być najbardziej "niezawodną" metodą wyodrębniania tekstu, ale wymaga wielu dodatkowych kroków.Jak zbudować PDFBox dla .Net

Próbowałem zbudować biblioteki dll za pomocą instrukcji znalezionych here, ale nie mam pojęcia, jak prawidłowo skompilować wymagane pliki. Net.

Jestem całkiem zagubiony, czy ktoś mógłby "krok po kroku dodać" PDFBox do swojej aplikacji .Net dla opornych "?

+0

Jak to się ma do java i lucene? – Manish

+2

PDFBox jest napisany w Javie i jest często używany w połączeniu z Lucene. Próbuję użyć aplikacji Java w .Net przy użyciu IKVM. – SharpBarb

Odpowiedz

21

W końcu udało mi się. Przedstawiłem kroki, które podjąłem, aby uzyskać działający przykład. Mam nadzieję, że ktoś uzna to za pomocne.

Pobierz Java JDK
Pobierz IKVM 0.42.0.6
Pobierz PDFBox 1.6.0-src.zip

Ant Manual był pomocny.

I przemianowany mrówka i PDFBox foldery skrócić ich imiona i przeniósł się im mój dysk C:

Musisz skonfigurować zmienne środowiskowe. (Windows 7) Kliknij prawym przyciskiem myszy Mój komputer-> Właściwości-> Zaawansowane ustawienia systemu-> Zmienne środowiskowe

Użyłem poniższych ustawień, ale twoje będą się różnić w zależności od miejsca instalacji Java i miejsca umieszczenia Ant i PDF Foldery skrzynki.

 
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) 

Raz wyżej to zrobić, wpisz w „mrówki” w oknie poleceń, powinieneś dostać „build.xml nie istnieje!” Wiadomość, czy wszystko jest poprawnie ustawiony.

Edytuj plik build.xml w folderze "pdfbox-1.6.0 \ pdfbox". Znajdź linię, która ma Zamień "." Na "Twoja ścieżka folderów IKVM".

przeniosłem iKVM do „C: \ IKVM” tak kopalnia wygląda następująco:

otworzyć okno polecenia i przejdź do „C: \ PDFBox-1.6.0 \ PDFBox„i wpisać «mrówkę»

... a potem nastąpi cud.

a kilka nowych folderów powinna istnieć w folderze PDFBox. wymagane DLL są w folderze bin. nie wiem dlaczego, ale mam „-SNAPSHOT” i koniec wszystkich moich plików (PDF-1.6.0-SNAPSHOT.dll).IKVM.GNU.Classpath (zwana także IKVM.OpenJDK.Classpath) już nie istnieje, była modułowiona od wersji 0.40. Jest teraz dostępny w postaci kilku bibliotek dll IKVM.OpenJDK. Potrzebujesz tylko kilku z nich.

Utwórz nowy projekt w Visual Studio C#

skopiować te pliki z folderu bin PDFBox do folderu bin Visual C# folderze bin projektu:

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

skopiować te pliki z kosza iKVM do folderu bin Twojego C# Wizualnej folderze bin projektu:

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

Dodaj odniesienia do dll iKVM tych powyżej i budować swój projekt.

Dodaj odniesienie do biblioteki pdfbox i ponownie zbuduj projekt.

Jesteś teraz gotowy do napisania kodu. Prosty przykład poniżej wygenerował ładny plik tekstowy z wejściowego pliku 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

Zdałem sobie sprawę, że potrzebny jest również plik IKVM.OpenJDK.Text.dll do odczytu tekstu z warstwy OCR – SharpBarb

+0

Ant został wycofany i zastąpiony przez Maven. [Więcej tutaj] (http://pdfbox.apache.org/building.html). – basiphobe

+0

Dzięki za uprzejme wyjaśnienie. Ktoś wprowadził ten przydatny wpis, ale nie jestem całkowicie związany z Javą i jestem zbyt biedny, by to zrozumieć. Mam nadzieję, że twoja wspaniała praca! –