Lectura de PDF con Java
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 :
Leer datos con Java Read from Console Standard Input with Java Si alguna vez, necesitaste leer ...
Programa para realizar suma de polinomios con listas enlazadas. package com.ubicuos.main; im ...
Draw an asterisk tree with Java Uno de los ejemplos cl谩sicos de uso de ciclos en los lenguajes ...





