PDF è diventato uno dei formati di documenti più utilizzati in una moltitudine di campi. In vari casi, viene utilizzato per generare fatture in cui i dati sembrano essere in forma tabellare. In questi casi, potrebbe essere necessario analizzare il PDF per leggere i dati dalle tabelle a livello di codice. A tal fine, l’articolo illustra come estrarre i dati dalle tabelle PDF utilizzando C#.
- API C# per estrarre tabelle PDF
- Estrai dati da tabelle PDF in C#
- Estrai la tabella da un’area specifica della pagina
API C# per estrarre tabelle da PDF
Per estrarre i dati dalle tabelle nei file PDF, utilizzeremo Aspose.PDF for .NET. È una potente API che fornisce un’ampia gamma di funzioni di manipolazione dei PDF. Puoi scaricare l’API o installarla utilizzando NuGet.
PM> Install-Package Aspose.PDF
Estrai dati da tabelle PDF in C#
Di seguito sono riportati i passaggi per estrarre i dati dalle tabelle in un PDF utilizzando C#.
- Carica il documento PDF utilizzando la classe Document.
- Scorri le pagine in PDF utilizzando la raccolta Document.Pages.
- In ogni iterazione, inizializza l’oggetto TableAbsorber e visita la pagina selezionata usando il metodo TableAbsorber.Visit(Page).
- In un ciclo nidificato, scorrere l’elenco delle tabelle nella raccolta TableAbsorber.TableList.
- Per ogni AbsorbedTable nella raccolta, scorrere la raccolta di righe in AbsorbedTable.RowList.
- Per ogni AbsorbedRow nella raccolta, scorrere la raccolta di celle in AbsorbedRow.CellList.
- Infine, scorrere la raccolta TextFragments di ogni AbsorbedCell e stampare il testo.
L’esempio di codice seguente mostra come estrarre il testo dalla tabella PDF in C#.
// Carica il documento PDF di origine
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Scorri le pagine
foreach (var page in pdfDocument.Pages)
{
// Crea un assorbitore di tabelle e visita la pagina
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Passa attraverso ogni tavolo assorbito
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Scorri ogni riga della tabella
foreach (AbsorbedRow row in table.RowList)
{
// Passa attraverso ogni cella nella riga
foreach (AbsorbedCell cell in row.CellList)
{
// Scorri i frammenti di testo
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();
}
}
}
Estrai la tabella da un’area specifica della pagina
Di seguito sono riportati i passaggi per estrarre una tabella da una parte specifica della pagina in un PDF utilizzando C#.
- Carica il documento PDF utilizzando la classe Document.
- Seleziona la Pagina desiderata dalla raccolta Document.Pages.
- Estrarre l’annotazione Square della pagina.
- Inizializza l’oggetto TableAbsorber e visita la pagina utilizzando il metodo TableAbsorber.Visit(Page).
- In un ciclo nidificato, scorrere l’elenco delle tabelle nella raccolta TableAbsorber.TableList.
- Se la tabella si trova nella regione, eseguire i passaggi seguenti.
- Scorri la raccolta di righe in AbsorbedTable.RowList.
- Per ogni AbsorbedRow nella raccolta, scorrere la raccolta di celle in AbsorbedRow.CellList.
- Infine, scorrere la raccolta TextFragments di ogni AbsorbedCell e stampare il testo.
L’esempio di codice seguente mostra come estrarre la tabella da un’area specifica della pagina PDF.
// Carica il documento PDF di origine
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Seleziona la pagina ed estrai la sua annotazione quadrata
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Crea table absorber e visita la pagina
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Scorri ogni tabella assorbita nell'elenco
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)
{
// Scorri ogni riga della tabella
foreach (AbsorbedRow row in table.RowList)
{
// Passa attraverso ogni cella nella riga
foreach (AbsorbedCell cell in row.CellList)
{
// Scorri i frammenti di testo e stampa il testo
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();
}
}
}
Ottieni una licenza gratuita
È possibile utilizzare Aspose.PDF per .NET senza limitazioni di valutazione utilizzando una licenza temporanea.
Conclusione
In questo articolo hai imparato come estrarre i dati dalle tabelle in un PDF usando C#. Inoltre, hai visto come estrarre una tabella da una specifica regione della pagina in PDF. Puoi esplorare di più sull’API C# PDF utilizzando la documentazione. Inoltre, puoi pubblicare le tue domande sul nostro forum.