Showing posts with label pdf. Show all posts
Showing posts with label pdf. Show all posts

Monday, June 13, 2016

Extraer texto de un pdf

La extración de texto de los PDF es fácil cuando sabes como hacerlo. Yo he usado las librerias pdfbox version 2.0.2

    <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.2</version>
        </dependency>

Simplemente se define un área  de extraccion de texto. Lo malo que no sabes si las coordenadas del xy empiezan (0,0) arriba o abajo.

Cuando agregas un rectangulo a un PDAnnotationLink() las coorenadas de las Y empiezan en lo alto de la página 

Cuando invocas    PDFTextStripperByArea() las coordenadas de la Y empieza en el pié de la página

PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
Rectangle2D rect = new Rectangle2D.Float(x, y, width, height);
stripper.addRegion("region", rect);
stripper.extractRegions(page);
stripper.getTextForRegion("region")

Para realizar el cambio de coordenada, se ha realizado esta función. 


private Rectangle2D changeUpper2Lower(Rectangle2D rect ,PDPage page){
 
    return new Rectangle2D.Float(
      (float)rect.getX(),
      (float)page.getMediaBox().getHeight() - (float) rect.getY()-(float)rect.getHeight(),
      (float)rect.getWidth(),
      (float)rect.getHeight());
 
  }