2011-12-09 11 views
7

Ho visto esempi per l'estrazione di testo da file PDF che utilizzano ITextSharp o PDFBox. PDFBox sembra essere il metodo più "affidabile" per estrarre il testo, ma richiede molti passaggi aggiuntivi.Come creare PDFBox per .Net

Ho provato a creare la DLL utilizzando le istruzioni trovate here, ma non ho idea di come creare correttamente i file richiesti per .Net.

Sono abbastanza perso, qualcuno potrebbe fornire un "Includi PDFBox nella tua applicazione. Net per Dummies" passo dopo passo?

+0

Come è correlato a java e lucene? – Manish

+2

PDFBox è una scritta in Java ed è spesso usata in congiunzione con Lucene. Sto cercando di utilizzare un'applicazione Java in .Net usando IKVM. – SharpBarb

risposta

21

Finalmente ho funzionato. Ho delineato i passaggi che ho seguito per ottenere un esempio funzionante. Spero che qualcuno lo trovi utile.

Scaricare il Java JDK
Scarica IKVM 0.42.0.6
Scarica PDFBox 1.6.0-src.zip

La Ant Manual era disponibile.

ho rinominato le cartelle Ant e PDFBox per abbreviare i loro nomi e si è trasferito loro il mio disco C:

Bisogna configurare le variabili d'ambiente. (Windows 7) Fare clic con il tasto destro del mouse su Risorse del computer-> Proprietà-> Impostazioni di sistema avanzate-> Variabili d'ambiente

Ho usato le impostazioni di seguito, ma le tue variano a seconda di dove hai installato Java e dove hai inserito Ant e PDF Cartella

 
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) 

Una volta che il sopra di esso fatto, digitare “formica” in una finestra di comando, si dovrebbe ottenere un messaggio “build.xml non esiste!” Se tutto è installato correttamente.

Modificare il file build.xml all'interno della cartella "pdfbox-1.6.0 \ pdfbox". Trova la riga che ha Sostituisci "." Con "Il percorso della cartella IKVM".

mi sono trasferito IKVM a “C: \ IKVM" quindi il mio assomiglia:

Aprire una finestra di comando e cd a “C: \ PDFBox-1.6.0 \ PDFBox“e digitare ‘formica’

... e poi si verifica un miracolo.

un mucchio di nuove cartelle dovrebbe ora esistere nella cartella PDFBox. la DLL richieste di sono nella cartella bin. non so perché, ma ho avuto un “-snapshot” e la fine di tutti i miei file (pdfbox-1.6.0-SNAPSHOT.dll).

IKVM.GNU.Classpath (anche chiamato IKVM.OpenJDK.Classpath) non esiste più, è stato modularizzato dalla versione 0.40. Ora è disponibile sotto forma di diverse dll di IKVM.OpenJDK. Ne hai solo bisogno alcuni.

Creare un nuovo progetto in Visual Studio C#

Copiare questi file dalla cartella PDFBox bin nella cartella bin di Visual C# cartella del progetto bin:

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

copiare i file dal cestino iKVM cartella alla cartella bin del vostro C# cartella di progetto di Visual bin:

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

aggiungere riferimenti alla DLL iKVM di alto e crea il tuo progetto.

Aggiungere un riferimento alla cartella pdfbox e creare nuovamente il progetto.

Ora sei pronto per scrivere del codice. Il semplice esempio qui sotto ha prodotto un bel file di testo dal pdf di input.

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

Mi sono reso conto che è necessario anche IKVM.OpenJDK.Text.dll per leggere il testo da un livello OCR – SharpBarb

+0

Ant è stato deprecato e sostituito con Maven. [Maggiori informazioni qui] (http://pdfbox.apache.org/building.html). – basiphobe

+0

Grazie per la tua gentile spiegazione. Qualcuno ha introdotto questo utile post, ma io non sono totalmente imparentato con Java e sono troppo povero per capire. Spero che il tuo ottimo lavoro! –

Problemi correlati