2011-12-09 25 views
7

He visto ejemplos para extraer texto de archivos PDF que usan ITextSharp o PDFBox. PDFBox parece ser el método más "confiable" para extraer texto, pero requiere muchos pasos adicionales.Cómo compilar PDFBox para .Net

He intentado construir el dll usando las instrucciones encontradas here, pero no tengo idea de cómo crear correctamente los archivos necesarios para .Net.

Estoy bastante perdido, ¿alguien podría proporcionar un "Incluir PDFBox en su aplicación .Net para Dummies" paso a paso?

+0

¿Cómo se relaciona esto con java y lucene? – Manish

+2

PDFBox está escrito en Java y se usa a menudo junto con Lucene. Estoy tratando de usar una aplicación Java en .Net usando IKVM. – SharpBarb

Respuesta

21

Finalmente lo conseguí para trabajar. Esbocé los pasos que seguí para obtener un ejemplo de trabajo. Espero que alguien encuentre esto útil.

Descargar el Java JDK
Descargar IKVM 0.42.0.6
Descargar PDFBox 1.6.0-src.zip

El Ant Manual era útil.

Retitulé las carpetas de hormigas y PDFBox para acortar sus nombres y les ha llevado mi unidad C:

Usted tiene que configurar las variables de entorno. (Windows 7) Haga clic con el botón derecho en Mi PC-> Propiedades-> Configuraciones avanzadas del sistema-> Variables de entorno

Utilicé la configuración a continuación, pero la suya variará dependiendo de dónde instaló Java y dónde puso Ant y PDF Carpetas de cajas.

 
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 vez que el anterior que se haga, el tipo de “hormiga” en una ventana de comandos, usted debe conseguir un mensaje “build.xml no existe!” Si todo está configurado correctamente.

Edite el archivo build.xml dentro de la carpeta "pdfbox-1.6.0 \ pdfbox". Busque la línea que tiene Reemplace "." Con "Su ruta de carpeta IKVM".

me trasladaron IKVM a “C: \ IKVM" así que la mía se parece a:

Abrir una ventana de comandos y cd en “C: \ PDFBox-1.6.0 \ PDFBox“y tipo ‘hormiga’

... y entonces se produce un milagro.

un montón de nuevas carpetas ahora debe existir en la carpeta PDFBox. las DLL son necesarias en la carpeta bin. no sé por qué, pero tengo un “-SNAPSHOT” y el final de todos mis archivos (pdfbox-1.6.0-SNAPSHOT.dll).

IKVM.GNU.Classpath (también llamado IKVM.OpenJDK.Classpath) ya no existe, se modularizó desde la versión 0.40. Ahora está disponible en forma de varias dll de IKVM.OpenJDK. Solo necesitas algunos de ellos.

Crear un nuevo proyecto en Visual Studio C#

copiar estos archivos desde la carpeta bin PDFBox a la carpeta bin de C# bin proyecto carpeta visual:

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

copiar estos archivos de la papelera de ikvm carpeta a la carpeta bin de la carpeta de Visual C# bin proyecto:

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

agregar referencias a las DLL iKVM anteriores y construir su proyecto.

Agregue una referencia al pdfbox dll y cree su proyecto nuevamente.

Ahora está listo para escribir un código. El ejemplo simple a continuación produjo un buen archivo de texto desde el pdf de entrada.

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

Me di cuenta de que también necesita IKVM.OpenJDK.Text.dll para leer el texto de una capa de OCR – SharpBarb

+0

Ant ha sido desaprobado y reemplazado por Maven. [Más aquí] (http://pdfbox.apache.org/building.html). – basiphobe

+0

Gracias por su amable explicación. Alguien presentó esta útil publicación, pero no estoy totalmente relacionado con Java y soy demasiado pobre para entender. Espero tu gran trabajo! –

Cuestiones relacionadas