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());
}
Hola, quisiera me enviaras el ejemplo completo para ver su funcionamiento y poder implementarlo en un caso similar que tengo, mi correo es smonicasofia@gmail.com
ReplyDeletegracias