PDF ist heutzutage eines der vorherrschenden Dokumentenformate. Es unterstützt Text, Grafiken, Tabellen, Anmerkungen und eine Reihe anderer Elemente. In bestimmten Fällen müssen Sie möglicherweise Daten aus den Tabellen in PDF Dokumenten wie Rechnungen extrahieren. Um dies programmgesteuert zu erreichen, behandelt der Artikel das Extrahieren von Daten aus Tabellen in PDF mit Java.
- Java API zum Extrahieren von Daten aus Tabellen in PDF
- Extrahieren Sie Daten aus Tabellen in PDF
- Tabelle aus einem bestimmten Bereich der Seite extrahieren
Extrahieren Sie Daten aus Tabellen in PDF - Java API
Aspose.PDF for Java ist eine funktionsreiche API zum Erstellen und Bearbeiten von PDF Dokumenten. Wir werden diese API verwenden, um die Daten aus Tabellen in PDF Dokumenten zu extrahieren. Sie können die JAR Datei der API entweder herunterladen oder mithilfe der folgenden Maven-Konfigurationen in Ihrer Java Anwendung installieren.
<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>
Datenextraktion aus Tabellen in PDF in Java
Im Folgenden sind die Schritte zum Extrahieren von Daten aus Tabellen in einer PDF Datei mit Java aufgeführt.
- Laden Sie zunächst das PDF Dokument mit der Klasse Document.
- Durchlaufen Sie die Seiten im PDF Format mit der Sammlung Document.getPages().
- Initialisieren Sie in jeder Iteration das Objekt TableAbsorber und besuchen Sie die ausgewählte Seite mit der methode TableAbsorber.visit(Page).
- Iterieren Sie in einer verschachtelten Schleife durch die Liste der Tabellen in der Sammlung TableAbsorber.getTableList().
- Durchlaufen Sie für jede AbsorbedTable in der Sammlung die Sammlung von Zeilen aus AbsorbedTable.getRowList().
- Durchlaufen Sie für jede AbsorbedRow in der Sammlung die Sammlung von Zellen aus AbsorbedRow.getCellList().
- Durchlaufen Sie schließlich die Sammlung TextFragment jeder AbsorbedCell und drucken Sie den Text aus.
Das folgende Codebeispiel zeigt, wie Sie mit Java Text aus Tabellen in PDF extrahieren.
// Quell-PDF Dokument laden
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Erstellen Sie einen Tabellenabsrober
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Seiten scannen
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// Seite besuchen
absorber.visit(page);
// Durch Tabellen iterieren
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Iteriere durch die Liste der Zeilen
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Iteriere durch die Liste der Zellen
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Durch Textfragmente iterieren
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: Tabellendaten aus einem bestimmten Bereich einer PDF-Seite extrahieren
Im Folgenden sind die Schritte zum Extrahieren einer Tabelle aus einem bestimmten Teil der Seite in einer PDF Datei mit Java aufgeführt.
- Laden Sie zunächst das PDF Dokument mit der Klasse Document.
- Wählen Sie dann die gewünschte Seite aus der Sammlung Document.getPages() aus.
- Extrahieren Sie die quadratische Anmerkung der Seite.
- Initialisieren Sie in jeder Iteration das Objekt TableAbsorber und besuchen Sie die ausgewählte Seite mit der methode TableAbsorber.visit(Page).
- Iterieren Sie in einer verschachtelten Schleife durch die Liste der Tabellen in der Sammlung TableAbsorber.getTableList().
- Überprüfen Sie, ob sich die absorbierte Tabelle im gewünschten Seitenbereich befindet.
- Durchlaufen Sie für jede AbsorbedTable in der Sammlung die Sammlung von Zeilen mit AbsorbedTable.getRowList().
- Durchlaufen Sie für jede AbsorbedRow in der Sammlung die Sammlung von Zellen mit AbsorbedRow.getCellList().
- Durchlaufen Sie schließlich die Sammlung TextFragment jeder AbsorbedCell und drucken Sie den Text aus.
Das folgende Codebeispiel zeigt, wie Tabellen aus einem bestimmten Bereich der PDF-Seite extrahiert werden.
// Quell-PDF Dokument laden
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Holen Sie sich den Verweis auf die gewünschte Seite
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Erstellen Sie einen Anmerkungsselektor
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Liste der Anmerkungen erhalten
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Erstellen Sie eine quadratische Anmerkung
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Tabellenabsorber erstellen und Seite besuchen
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Durch Tabellen iterieren
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Überprüfen Sie, ob die Tabelle vorhanden ist
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();
}
}
}
}
}
Holen Sie sich eine kostenlose Lizenz
Sie können Aspose.PDF for Java ohne Evaluierungseinschränkungen mit einer temporären Lizenz verwenden.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie mit Java Daten aus Tabellen in einem PDF extrahieren. Darüber hinaus behandelte der Artikel das Extrahieren von Tabellen aus einem bestimmten Bereich der Seite in PDF. Außerdem können Sie in der Dokumentation mehr über Aspose.PDF for Java erfahren. Darüber hinaus können Sie Ihre Fragen über unser Forum stellen.