Lectura de PDF con Java

enero 26 2010Un comentario

Guardado en : General

PDF´s (Portable Document Format) es un formato de documentos que se utiliza de manera generalizada en muchos ámbitos. Actualmente con el Boom de los lectores de libros electrónicos han surgido nuevos formatos como Kindle/Mobipocket, ePub, eReader, etc.

Aun con la existencia de estos formatos hay dispositivos de lectura que si soportan PDF, pero hay algunos que prefieren formatos menos amplios para poder así interpretar su contenido.

Algo interesante a nivel de programación seria construir transformadores de formatos para que fácilmente de una fuente de información como PDF´s u otras se pueda pasar y así facilitar la distribución a estos dispositivos de lectura.

Por tal motivo y en vista de que el formato PDF´s se utiliza mucho en este ámbito de libros electrónicos les muestro un ejemplo práctico de lectura de PDF´s. Tecnológicamente hay bastantes herramientas y lenguajes que pueden realizar esta lectura. En mi caso y por mi pasión por java he utilizado este lenguaje y la librería PDFBox http://pdfbox.apache.org que tiene bastantes cosas muy buenas para la extracción y clasificación de la información que tiene un PDF.

El código es el siguiente:

package ubicuos.com.test.lecturapdf;
 
import java.awt.Rectangle;
import java.awt.print.PageFormat;
import java.io.IOException;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFTextStripperByArea;
 
/**
 *
 * @author www.ubicuos.com
 */
public class LecturaPdf {
 
    public static void main(String args[]) {
        LecturaPdf pdf = new LecturaPdf();
        pdf.lecturaPdf();
    }
 
    public void lecturaPdf() {
        try {
            // carga de documento
            PDDocument pd = PDDocument.load("C:/prueba/PDFPrueba.pdf");
            // obtiene las paginas y las almacena en una lista
            List l = pd.getDocumentCatalog().getAllPages();
            Object[] obj = l.toArray();
            //exploramos la lista para obtener las paginas
            for (int i = 0; i < obj.length; i++) {
                System.out.println("---------Pagina" + (i + 1) + "-----------------------");
                PDPage page = (PDPage) obj[i];
                //Obtenemos el formato de la pagina
                PageFormat pageFormat = pd.getPageFormat(i);
                //Obtenemos las dimensiones de la pagina
                Double d1 = new Double(pageFormat.getHeight());
                Double d2 = new Double(pageFormat.getWidth());
                int width = d1.intValue();
                int eigth = d2.intValue();
                //Este componente nos ayudara a obtener el texto
                PDFTextStripperByArea stripper = new PDFTextStripperByArea();
                //Definimos un area en donde buscaremos texto
                Rectangle rect = new Rectangle(0, 0, width, eigth);
                //se registra la region
                stripper.addRegion("area1", rect);
                //extraemos el texto del area
                stripper.extractRegions(page);
                //Imprimimos el contenido
                System.out.println("Texto leido:" + rect);
                System.out.println(stripper.getTextForRegion("area1"));
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

Como se puede ver es muy sencillo procesar un PDF. Lo que seguiría seria hacer algo que estandarice y le haga el proceso necesario para poder publicar a otros formatos. Eso se los dejo de tarea.

Quizá te interese :

Acerca del autor:

Una respuesta a “Lectura de PDF con Java”

  1. Diego G dice:

    Muchas gracias perfecto !!!! Sos Grande!!!

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->