PDF es uno de los formatos de documentos dominantes en estos días. Admite texto, gráficos, tablas, anotaciones y una variedad de otros elementos. En ciertos casos, es posible que deba extraer datos de las tablas en documentos PDF, como facturas. Para lograr esto mediante programación, el artículo cubre cómo extraer datos de tablas en PDF usando Java.
- API de Java para extraer datos de tablas en PDF
- Extraer datos de tablas en PDF
- Extraer tabla de un área específica de la página
Extraer datos de tablas en PDF - API de Java
Aspose.PDF for Java es una API rica en funciones para crear y manipular documentos PDF. Usaremos esta API para extraer los datos de tablas en documentos PDF. Puede descargar el JAR de la API o instalarlo dentro de su aplicación Java usando las siguientes configuraciones Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>21.9</version>
</dependency>
Extracción de datos de tablas en PDF en Java
Los siguientes son los pasos para extraer datos de tablas en un PDF usando Java.
- Primero, cargue el documento PDF utilizando la clase Document.
- Recorra las páginas en PDF usando la colección Document.getPages().
- En cada iteración, inicialice el objeto TableAbsorber y visite la página seleccionada utilizando el método TableAbsorber.visit(Page).
- En un bucle anidado, recorre la lista de tablas en la colección TableAbsorber.getTableList().
- Para cada AbsorbedTable en la colección, itere a través de la colección de filas de AbsorbedTable.getRowList().
- Para cada AbsorbedRow en la colección, itere a través de la colección de celdas de AbsorbedRow.getCellList().
- Finalmente, recorra la colección TextFragment de cada AbsorbedCell e imprima el texto.
El siguiente ejemplo de código muestra cómo extraer texto de tablas en PDF usando Java.
// Cargar documento PDF de origen
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Crear una mesa absrober
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Escanear páginas
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// Visitar página
absorber.visit(page);
// Iterar a través de tablas
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Iterar a través de la lista de filas
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Iterar a través de la lista de celdas
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Iterar a través de fragmentos de texto
for (com.aspose.pdf.TextFragment fragment : cell.getTextFragments()) {
StringBuilder sb = new StringBuilder();
for (com.aspose.pdf.TextSegment seg : fragment.getSegments())
sb.append(seg.getText());
System.out.print(sb.toString() + "|");
}
}
System.out.println();
}
}
}
Java: extraer datos de tabla de un área específica de la página PDF
Los siguientes son los pasos para extraer una tabla de una parte específica de la página en un PDF usando Java.
- Primero, cargue el documento PDF utilizando la clase Document.
- Luego, seleccione la Página deseada de la colección Document.getPages().
- Extrae la anotación Cuadrada de la página.
- En cada iteración, inicialice el objeto TableAbsorber y visite la página seleccionada utilizando el método TableAbsorber.visit(Page).
- En un bucle anidado, recorre la lista de tablas en la colección TableAbsorber.getTableList().
- Compruebe si la tabla absorbida está en la región de página deseada.
- Para cada AbsorbedTable en la colección, itere a través de la colección de filas usando AbsorbedTable.getRowList().
- Para cada AbsorbedRow en la colección, itere a través de la colección de celdas usando AbsorbedRow.getCellList().
- Finalmente, recorra la colección TextFragment de cada AbsorbedCell e imprima el texto.
El siguiente ejemplo de código muestra cómo extraer tablas de una región específica de la página PDF.
// Cargar documento PDF de origen
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Obtener referencia de la página deseada
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Crear un selector de anotaciones
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Obtener lista de anotaciones
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Crear una anotación cuadrada
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Crear absorbente de tabla y página de visita
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Iterar a través de tablas
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Comprobar si existe la tabla
boolean isInRegion = (squareAnnotation.getRect().getLLX() < table.getRectangle().getLLX())
&& (squareAnnotation.getRect().getLLY() < table.getRectangle().getLLY())
&& (squareAnnotation.getRect().getURX() > table.getRectangle().getURX())
&& (squareAnnotation.getRect().getURY() > table.getRectangle().getURY());
if (isInRegion) {
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
{
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
for (com.aspose.pdf.TextFragment fragment : cell.getTextFragments()) {
StringBuilder sb = new StringBuilder();
for (com.aspose.pdf.TextSegment seg : fragment.getSegments())
sb.append(seg.getText());
System.out.print(sb.toString() + "|");
}
}
System.out.println();
}
}
}
}
}
Obtenga una licencia gratis
Puede usar Aspose.PDF for Java sin limitaciones de evaluación usando una licencia temporal.
Conclusión
En este artículo, ha aprendido a extraer datos de tablas en un PDF utilizando Java. Además, el artículo cubría cómo extraer tablas de una región específica de la página en PDF. Además, puede obtener más información sobre Aspose.PDF for Java utilizando la documentación. Además, puede hacer sus preguntas a través de nuestro foro.