Cómo leer archivos PDF en Java

No es difícil leer archivos PDF en Java usando 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 gratuita PDFBox de código abierto 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.

Reunir 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. Las versiones están 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.

Paso 2

Descargue el sistema de desarrollo de 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". Escriba el nombre del proyecto "PrintPdf" en el cuadro de diálogo que aparece. Asegúrese de que esté seleccionado el botón de radio que dice "Crear carpetas separadas para los archivos fuente y de clase". Haga clic en "Finalizar".

Paso 4

Cree una carpeta "lib" en su proyecto "PrintPdf". Haz clic derecho en el proyecto "PrintPdf" y selecciona "Nuevo" y luego "Carpeta". Introduzca 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 varios servidores que pueden proporcionar este archivo. Elija cada uno de ellos y se descargará cada archivo jar. Copie cada archivo jar en el directorio lib que acaba de crear.

Paso 6

Descargue el paquete 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

Haz clic derecho en el proyecto PrintPDF y selecciona "Propiedades". Seleccione "Ruta de compilación de Java" y seleccione la pestaña "Bibliotecas". Haga clic en "Agregar jars", 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".

Escribir 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 usando 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 como "public static void principal..." 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 se detalla en el constructor de PDFTextParser ("data/JavaPDF.pdf"). Podría ser fácilmente un argumento de línea de comando:

PDFTextParser pdf = new PDFTextParser(argv[0])

IR

o seleccionado desde una interfaz GUI.

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

Paso 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

// Extract text from PDF Document
public PDFTextParser(String fileName) {
 File file = new File(fileName)

GO if (!file.isFile()) { System.err.println("File " + fileName + " is not exist.") GO } //Configurar una instancia del analizador PDF try { parser =new PDFParser(new FileInputStream( file)) GO } catch (IOException e) { System.err.println("No se pudo abrir PDF Parser. " + e.getMessage()) GO } } //------------ ------------------ public String getParsedText() { PDDocument pdDoc =null GO COSDocument cosDoc =null;
Cadena de texto analizado =nulo; IR

try { 
 PDFTextStripper pdfStripper = new PDFTextStripper()

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

//get list of all pages
 List<PDPage> list = pdDoc.getDocumentCatalog().getAllPages()

IR

//note that you can print out any pages you want
 //by choosing different values of the start and end page
 pdfStripper.setStartPage(1); //1-based
 int length = list.size(); //total number of pages
 pdfStripper.setEndPage(length); //last page

 //get the text for the pages selected
 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 texto analizado GO }

Paso 5

Ejecuta el programa. Haz clic derecho en la clase PDFTextParser y haz clic en "Ejecutar como" y luego en "Programa Java". El programa debería 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 creado cuando no puede encontrar un archivo de configuración cuando se inicia. Haz clic derecho en la carpeta "src" del proyecto PrintPDF y selecciona "Nuevo" y luego "Archivo". Nombre 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".

Establezca el nivel del registrador raíz en DEBUG y su único agregador en A1. log4j.rootLogger=ADVERTENCIA, A1

A1 está configurado para ser un ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender

A1 usa PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Paso 3

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

Consejo

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