Cómo leer un archivo PDF en Java

Mujer que trabaja en una oficina

Credito de imagen: Pixland / Pixland / Getty Images

No es difícil leer archivos PDF en Java utilizando bibliotecas que están fácilmente disponibles. La lectura de archivos PDF le permite escribir programas Java que pueden procesar el texto de esos archivos. Una opción para leer archivos PDF es la biblioteca PDFBox de código abierto y gratuita disponible en Apache. La plataforma de desarrollo Eclipse Java facilita este trabajo y administra las bibliotecas que descargará. Debe estar familiarizado con la programación de Java para hacer uso de estas bibliotecas de Java.

Reúna las bibliotecas necesarias

Paso 1

Descargue Java JDK del sitio web de Sun. Este es un archivo ejecutable que puede instalar en su sistema ejecutándolo. Hay versiones disponibles para Windows, Mac y Linux. Haga clic en el botón rojo "Descargar". Guarde un archivo llamado "jdk-6uxx-windows-xxx.exe" cuando se le solicite. Guarde este archivo y luego haga doble clic en él para iniciar el instalador de Java.

Video del día

Paso 2

Descargue el sistema de desarrollo Eclipse y descomprímalo en un directorio de nivel superior. Seleccione "Eclipse IDE para desarrolladores de Java". Esto iniciará la descarga de "eclipse-java-galileo-SR2-win32.zip". Haga doble clic en el archivo para descomprimirlo después de que se complete la descarga. Seleccione la ubicación del directorio raíz "C:" para descomprimir Eclipse.

Paso 3

Inicie Eclipse haciendo doble clic en "eclipse.exe" en el directorio que acaba de crear al descomprimir el archivo zip de eclipse. En el sistema Eclipse, cree un proyecto llamado "PrintPdf". Seleccione "Archivo", luego "Nuevo" y luego "Proyecto Java". Escribe el nombre del proyecto "PrintPdf" en el cuadro de diálogo que aparece. Asegúrese de que esté seleccionado el botón de opción que dice "Crear carpetas separadas para los archivos fuente y de clase". Haga clic en "Finalizar".

Etapa 4

Cree una carpeta "lib" en su proyecto "PrintPdf". Haga clic derecho en el proyecto "PrintPdf" y seleccione "Nuevo" y luego "Carpeta". Ingrese el nombre "lib" y haga clic en "Finalizar".

Paso 5

Descargue Apache "PDFBox.jar" del sitio de Apache y cópielo en el directorio lib que acaba de crear. En la misma página web, descargue el archivo "fontbox-nn.jar" y el archivo "jempbox-nn.jar". En cada caso, cuando haga clic en ese archivo jar, lo llevará a una página donde puede seleccionar uno de los varios servidores que pueden proporcionar este archivo. Elija cada uno de ellos y cada archivo jar se descargará. Copie cada archivo jar en el directorio lib que acaba de crear.

Paso 6

Descargue el paquete de Apache log4j.jar de la misma manera y copie el archivo log4j.jar en el directorio. La biblioteca Apache PDFBox utiliza esta biblioteca de registro de Apache, por lo que este archivo debe estar presente.

Paso 7

Descargue el paquete Apache Commons Discovery como un archivo zip. Haga doble clic en el archivo zip, seleccione "commons-discovery-nn.jar" y extráigalo en el directorio lib.

Paso 8

En Eclipse, haga clic en el directorio "lib" y presione "F5". Asegúrese de que se muestren todos los archivos jar que agregó.

Paso 9

Haga clic derecho en el proyecto PrintPDF y seleccione "Propiedades". Seleccione "Java Build Path" y seleccione la pestaña "Bibliotecas". Haga clic en "Agregar frascos" y vaya al directorio lib que acaba de crear, y agregue "commons-logging-nn.jar" "fontbox-nn.jar", "jempbox-nn.jar", "log4j-nn.jar, "y" pdfbox-nn.jar ". Haga clic en "Aceptar".

Escriba el código para leer archivos PDF

Paso 1

Haz clic derecho en la carpeta "src" de tu proyecto "PrintPDF" y selecciona "Nuevo" y el "Paquete". Cree un paquete con cualquier nombre significativo. Por ejemplo, nombre el paquete "com.pdf.util". Haga clic en "Finalizar".

Paso 2

Haga clic derecho en el nombre del paquete que acaba de crear y seleccione "Nuevo" y luego "Clase". Crea una clase llamada "PDFTextParser". Asegúrese de hacer clic en la casilla de verificación marcada "public static void main ..." para que el sistema cree un método "principal".

Paso 3

Edite el método "principal" en la clase "PDFTextParser" para que contenga el siguiente código:

public static void main (String args []) {PDFTextParser pdf = new PDFTextParser ("data / javaPDF.pdf") GO // imprime los resultados System.out.println (pdf.getParsedText ()) GO}

Tenga en cuenta que el archivo que desea imprimir está escrito en el constructor de PDFTextParser ("data / JavaPDF.pdf"). Fácilmente podría ser un argumento de línea de comando:

PDFTextParser pdf = nuevo PDFTextParser (argv [0])

VAMOS

o seleccionado de una interfaz GUI.

Crea una instancia de la clase PDFTextParser y luego llama a su método "getParsedText".

Etapa 4

Inserte el siguiente código justo debajo de la línea de clase superior "public class PDFTextParser" que se creó para usted.

analizador PDFParser privado = null GO

// Extraer texto del documento PDF. public PDFTextParser (String fileName) {File file = new File (fileName)

GO if (! File.isFile ()) {System.err.println ("File" + fileName + "does not exist.") GO} // Configure la instancia del analizador PDF try {analizador = nuevo PDFParser (nuevo FileInputStream (archivo)) GO} catch (IOException e) {System.err.println ("No se puede abrir el PDF Analizador. "+ e.getMessage ()) GO}} // public String getParsedText () {PDDocument pdDoc = null GO COSDocument cosDoc = null;
String parsedText = null; VAMOS

pruebe {PDFTextStripper pdfStripper = new PDFTextStripper ()

GO parser.parse () GO cosDoc = parser.getDocument () GO pdDoc = nuevo PDDocument (cosDoc) GO

// obtener la lista de todas las páginas List  list = pdDoc.getDocumentCatalog (). getAllPages ()

VAMOS

// tenga en cuenta que puede imprimir cualquier página que desee // eligiendo valores diferentes de la página inicial y final pdfStripper.setStartPage (1); // longitud int basada en 1 = list.size (); // número total de páginas pdfStripper.setEndPage (longitud); // última página // obtener el texto de las páginas seleccionadas parsedText = pdfStripper.getText (pdDoc)

GO} catch (IOException e) {System.err .println ("Ocurrió una excepción al analizar el documento PDF." + E.getMessage ()) GO} finalmente {try {if (cosDoc! = null) cosDoc.close () GO if (pdDoc! = null) pdDoc.close () GO} catch (IOException e) {e.printStackTrace () GO} }
return parsedText GO}

Paso 5

Ejecuta el programa. Haga clic derecho en la clase PDFTextParser y haga clic en "Ejecutar como" y luego en "Programa Java". El programa debe ejecutarse e imprimir el contenido de texto del archivo PDF que ingresó en su código.

Suprimir el mensaje de error de inicio de Log4j

Paso 1

Cree un archivo de configuración para suprimir el mensaje de error log4j del sistema de registro de Java que se crea cuando no puede encontrar un archivo de configuración cuando se inicia. Haga clic derecho en la carpeta "src" del proyecto PrintPDF y seleccione "Nuevo" y luego "Archivo". Nombra el archivo "log4j.properties". Eclipse mostrará una pantalla vacía para este nuevo archivo.

Paso 2

Pegue las siguientes líneas en la pantalla vacía que representa el archivo "log4j.properties".

Paso 3

Guarde el archivo "log4j.properties". La presencia de este archivo en el directorio de nivel superior "src" suprimirá el mensaje de inicio de log4j y cualquier mensaje de registro trivial. El sistema log4j imprimirá solo los errores reales.

Propina

También hay varios paquetes comerciales que puede utilizar para extraer texto de archivos PDF, pero no son económicos.