Lectura de PDF con Java

enero 26 2010Se el primero en comentar

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.

Comparte esta informaci贸n:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

Quiz谩 te interese :

Acerca del autor: alfonso

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

-->