PDF ist zu einem der am häufigsten verwendeten Dokumentenformate in einer Vielzahl von Bereichen geworden. In verschiedenen Fällen wird es verwendet, um Rechnungen zu erstellen, bei denen die Daten in tabellarischer Form erscheinen. In solchen Fällen müssen Sie möglicherweise die PDF Datei parsen, um Daten programmgesteuert aus den Tabellen zu lesen. Um dies zu erreichen, behandelt der Artikel das Extrahieren von Daten aus PDF-Tabellen mit C#.
- C# API zum Extrahieren von PDF-Tabellen
- Daten aus PDF-Tabellen in C# extrahieren
- Tabelle aus einem bestimmten Bereich der Seite extrahieren
C# API zum Extrahieren von Tabellen aus PDF
Um Daten aus den Tabellen in PDF Dateien zu extrahieren, verwenden wir Aspose.PDF for .NET. Es ist eine leistungsstarke API, die eine breite Palette von PDF-Manipulationsfunktionen bietet. Sie können die API entweder herunterladen oder sie mit NuGet installieren.
PM> Install-Package Aspose.PDF
Daten aus PDF-Tabellen in C# extrahieren
Im Folgenden sind die Schritte zum Extrahieren von Daten aus Tabellen in einer PDF Datei mit C# aufgeführt.
- Laden Sie das PDF Dokument mit der Klasse Document.
- Durchlaufen Sie die Seiten im PDF Format mit der Sammlung Document.Pages.
- 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.TableList.
- Durchlaufen Sie für jede AbsorbedTable in der Sammlung die Sammlung von Zeilen in AbsorbedTable.RowList.
- Durchlaufen Sie für jede AbsorbedRow in der Sammlung die Sammlung von Zellen in AbsorbedRow.CellList.
- Durchlaufen Sie schließlich die Sammlung TextFragments jeder AbsorbedCell und drucken Sie den Text aus.
Das folgende Codebeispiel zeigt, wie Text aus einer PDF-Tabelle in C# extrahiert wird.
// Quell-PDF Dokument laden
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Blättern Sie durch die Seiten
foreach (var page in pdfDocument.Pages)
{
// Erstellen Sie einen Tischabsorber und besuchen Sie die Seite
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Durchlaufen Sie jede absorbierte Tabelle
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Durchlaufen Sie jede Zeile in der Tabelle
foreach (AbsorbedRow row in table.RowList)
{
// Durchlaufen Sie jede Zelle in der Zeile
foreach (AbsorbedCell cell in row.CellList)
{
// Durchlaufen Sie die Textfragmente
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
sb.Append(seg.Text);
Console.Write($"{sb.ToString()}|");
}
}
Console.WriteLine();
}
}
}
Tabelle aus einem bestimmten Bereich der Seite extrahieren
Im Folgenden finden Sie die Schritte zum Extrahieren einer Tabelle aus einem bestimmten Teil der Seite in einer PDF Datei mit C#.
- Laden Sie das PDF Dokument mit der Klasse Document.
- Wählen Sie die gewünschte Seite aus der Sammlung Dokument.Seiten aus.
- Extrahieren Sie die quadratische Anmerkung der Seite.
- Initialisieren Sie das Objekt TableAbsorber und besuchen Sie die Seite mit der methode TableAbsorber.Visit(Page).
- Iterieren Sie in einer geschachtelten Schleife durch die Liste der Tabellen in der Sammlung TableAbsorber.TableList.
- Wenn sich die Tabelle in der Region befindet, führen Sie die folgenden Schritte aus.
- Durchlaufen Sie die Sammlung von Zeilen in AbsorbedTable.RowList.
- Durchlaufen Sie für jede AbsorbedRow in der Sammlung die Sammlung von Zellen in AbsorbedRow.CellList.
- Durchlaufen Sie schließlich die Sammlung TextFragments jeder AbsorbedCell und drucken Sie den Text aus.
Das folgende Codebeispiel zeigt, wie eine Tabelle aus einem bestimmten Bereich der PDF-Seite extrahiert wird.
// Quell-PDF Dokument laden
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Wählen Sie die Seite aus und extrahieren Sie ihre quadratische Anmerkung
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Erstellen Sie Tischabsorber und besuchen Sie die Seite
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Durchlaufen Sie jede absorbierte Tabelle in der Liste
foreach (AbsorbedTable table in absorber.TableList)
{
var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
(squareAnnotation.Rect.URY > table.Rectangle.URY);
if (isInRegion)
{
// Durchlaufen Sie jede Zeile der Tabelle
foreach (AbsorbedRow row in table.RowList)
{
// Durchlaufen Sie jede Zelle in der Zeile
foreach (AbsorbedCell cell in row.CellList)
{
// Durchlaufen Sie die Textfragmente und drucken Sie den Text aus
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
{
sb.Append(seg.Text);
}
var text = sb.ToString();
Console.Write($"{text}|");
}
}
Console.WriteLine();
}
}
}
Holen Sie sich eine kostenlose Lizenz
Sie können Aspose.PDF for .NET ohne Evaluierungseinschränkungen mit einer temporären Lizenz verwenden.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie mit C# Daten aus Tabellen in einer PDF Datei extrahieren. Außerdem haben Sie gesehen, wie Sie eine Tabelle aus einem bestimmten Bereich der Seite in PDF extrahieren. Weitere Informationen zur C# PDF API finden Sie in der Dokumentation. Außerdem können Sie Ihre Fragen in unserem Forum posten.