Extraire des données d'une table en PDF Java

PDF est l’un des formats de document dominants de nos jours. Il prend en charge le texte, les graphiques, les tableaux, les annotations et une gamme d’autres éléments. Dans certains cas, vous devrez peut-être extraire des données des tableaux dans des documents PDF tels que des factures. Pour y parvenir par programmation, l’article explique comment extraire des données de tables au format PDF à l’aide de Java.

Extraire des données de tableaux au format PDF - API Java

Aspose.PDF for Java est une API riche en fonctionnalités pour créer et manipuler des documents PDF. Nous utiliserons cette API pour extraire les données des tableaux dans les documents PDF. Vous pouvez soit télécharger le JAR de l’API, soit l’installer dans votre application Java en utilisant les configurations Maven suivantes.

<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>

Extraction de données à partir de tableaux en PDF en Java

Voici les étapes pour extraire des données de tables dans un PDF à l’aide de Java.

L’exemple de code suivant montre comment extraire du texte de tableaux au format PDF à l’aide de Java.

// Charger le document PDF source
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");

// Créer un absrober de table
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();

// Numériser des pages
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
    
    // Visitez la page
    absorber.visit(page);
  
    // Itérer dans les tables
    for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
        System.out.println("Table");
        
        // Itérer dans la liste des lignes
        for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
            
            // Itérer dans la liste de cellules
            for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
                
                // Itérer à travers des fragments de texte
                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 : Extraire des données de tableau d’une zone spécifique d’une page PDF

Voici les étapes pour extraire le tableau d’une partie spécifique de la page dans un PDF en utilisant Java.

L’exemple de code suivant montre comment extraire des tableaux d’une région spécifique de la page PDF.

// Charger le document PDF source
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");

// Obtenir la référence de la page souhaitée
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);

// Créer un sélecteur d'annotations
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
        new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));

// Obtenir la liste des annotations
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
    System.out.println("Marked tables not found..");
    return;
}

// Créer une annotation carrée
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);

// Créer un absorbeur de table et visiter la page
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);

// Itérer dans les tables
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
    {
        // Vérifier si la table existe
        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();
                }
            }
        }
    }
}

Obtenez une licence gratuite

Vous pouvez utiliser Aspose.PDF for Java sans limitations d’évaluation à l’aide d’une licence temporaire.

Conclusion

Dans cet article, vous avez appris à extraire des données de tables dans un PDF à l’aide de Java. De plus, l’article expliquait comment extraire des tableaux d’une région spécifique de la page au format PDF. En outre, vous pouvez en savoir plus sur Aspose.PDF for Java en utilisant la documentation. De plus, vous pouvez poser vos questions via notre forum.

Voir également