PDF se stal jedním z nejpoužívanějších formátů dokumentů v mnoha oblastech. V různých případech se používá ke generování faktur, kde se údaje zdají být v tabulkové formě. V takových případech možná budete muset analyzovat PDF, abyste mohli číst data z tabulek programově. Chcete-li toho dosáhnout, článek popisuje, jak extrahovat data z tabulek PDF pomocí C#.
- Knihovna C# pro extrahování tabulek PDF
- Extrahujte data z tabulek PDF v C#
- Extrahujte tabulku ze specifické oblasti stránky
Knihovna C# pro extrahování tabulek z PDF
K extrahování dat z tabulek v souborech PDF použijeme Aspose.PDF for .NET. Je to výkonná knihovna, která poskytuje širokou škálu funkcí pro manipulaci s PDF. Knihovnu si můžete buď stáhnout, nebo ji nainstalovat pomocí NuGet.
PM> Install-Package Aspose.PDF
Extrahujte data z tabulek PDF v C#
Následují kroky k extrahování dat z tabulek v PDF pomocí C#.
- Načtěte dokument PDF pomocí třídy Document.
- Procházejte stránky v PDF pomocí kolekce Document.Pages.
- V každé iteraci inicializujte objekt TableAbsorber a navštivte vybranou stránku pomocí metody TableAbsorber.Visit(Page).
- Ve vnořené smyčce procházejte seznam tabulek v kolekci TableAbsorber.TableList.
- Pro každou AbsorbedTable v kolekci iterujte kolekci řádků v AbsorbedTable.RowList.
- Pro každý AbsorbedRow v kolekci iterujte kolekci buněk v AbsorbedRow.CellList.
- Nakonec projděte kolekci TextFragments každé AbsorbedCell a vytiskněte text.
Následující ukázka kódu ukazuje, jak extrahovat text z tabulky PDF v C#.
// Načíst zdrojový dokument PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Procházejte stránky
foreach (var page in pdfDocument.Pages)
{
// Vytvořte absorbér tabulky a navštivte stránku
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Projděte každý absorbovaný stůl
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Procházejte každý řádek v tabulce
foreach (AbsorbedRow row in table.RowList)
{
// Procházejte každou buňku v řádku
foreach (AbsorbedCell cell in row.CellList)
{
// Procházejte fragmenty textu
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();
}
}
}
Extrahujte tabulku ze specifické oblasti PDF
Následují kroky k extrahování tabulky z konkrétní části stránky v PDF pomocí C#.
- Načtěte dokument PDF pomocí třídy Document.
- Vyberte požadovanou Strana z kolekce Document.Pages.
- Extrahujte čtvercovou anotaci stránky.
- Inicializujte objekt TableAbsorber a navštivte stránku pomocí metody TableAbsorber.Visit(Page).
- Ve vnořené smyčce procházejte seznam tabulek v kolekci TableAbsorber.TableList.
- Pokud je tabulka v regionu, proveďte následující kroky.
- Iterujte kolekci řádků v AbsorbedTable.RowList.
- Pro každý AbsorbedRow v kolekci iterujte kolekci buněk v AbsorbedRow.CellList.
- Nakonec projděte kolekci TextFragments každého AbsorbedCell a vytiskněte text.
Následující ukázka kódu ukazuje, jak extrahovat tabulku z určité oblasti stránky PDF.
// Načíst zdrojový dokument PDF
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Vyberte stránku a extrahujte její čtvercovou anotaci
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Vytvořte absorbér tabulky a navštivte stránku
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Projděte každou absorbovanou tabulku v seznamu
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)
{
// Procházejte každý řádek tabulky
foreach (AbsorbedRow row in table.RowList)
{
// Procházejte každou buňku v řádku
foreach (AbsorbedCell cell in row.CellList)
{
// Procházejte fragmenty textu a vytiskněte text
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();
}
}
}
Bezplatná knihovna C# PDF pro extrahování tabulek
Můžete získat bezplatnou dočasnou licenci a extrahovat data z tabulek v souborech PDF bez jakýchkoli omezení.
Prozkoumejte knihovnu C# PDF
Více o knihovně C# PDF můžete prozkoumat pomocí dokumentace. Své dotazy můžete také zveřejňovat na našem fóru.
Závěr
V tomto článku jste se naučili extrahovat data z tabulek v PDF pomocí C#. Dále jste viděli, jak extrahovat tabulku z určité oblasti stránky v PDF. Podrobný průvodce a ukázka kódu ukázaly, jak snadné je zpracovat tabulku PDF a extrahovat její data.