Extraer datos de la tabla en PDF Java

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.

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.

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.

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.

Ver también