PDF è uno dei formati di documenti normativi di questi tempi. Supporta testo, grafica, tabelle, annotazioni e una serie di altri elementi. In alcuni casi, potrebbe essere necessario estrarre i dati dalle tabelle nei documenti PDF come le fatture. Per raggiungere questo obiettivo a livello di codice, l’articolo illustra come estrarre i dati dalle tabelle in PDF utilizzando Java.
- API Java per estrarre dati da tabelle in PDF
- Estrai i dati dalle tabelle in PDF
- Estrai la tabella da un’area specifica della pagina
Estrai dati da tabelle in PDF - API Java
Aspose.PDF for Java è un’API ricca di funzionalità per la creazione e la manipolazione di documenti PDF. Useremo questa API per estrarre i dati dalle tabelle nei documenti PDF. Puoi scaricare il JAR dell’API o installarlo all’interno della tua applicazione Java utilizzando le seguenti configurazioni Maven.
<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>
Estrazione dati da tabelle in PDF in Java
Di seguito sono riportati i passaggi per estrarre i dati dalle tabelle in un PDF utilizzando Java.
- Innanzitutto, carica il documento PDF utilizzando la classe Document.
- Scorri le pagine in PDF utilizzando la raccolta Document.getPages().
- 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.getTableList().
- Per ogni AbsorbedTable nella raccolta, scorrere la raccolta di righe da AbsorbedTable.getRowList().
- Per ogni AbsorbedRow nella raccolta, scorrere la raccolta di celle da AbsorbedRow.getCellList().
- Infine, scorrere la raccolta TextFragment di ogni AbsorbedCell e stampare il testo.
L’esempio di codice seguente mostra come estrarre il testo dalle tabelle in PDF utilizzando Java.
// Carica il documento PDF di origine
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Crea un assorbitore di tavoli
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Scansiona le pagine
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// Visita la pagina
absorber.visit(page);
// Scorri le tabelle
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Iterare l'elenco di righe
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Iterare l'elenco di celle
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Scorri i frammenti di testo
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: estrai i dati della tabella da un’area specifica della pagina PDF
Di seguito sono riportati i passaggi per estrarre la tabella da una parte specifica della pagina in un PDF utilizzando Java.
- Innanzitutto, carica il documento PDF utilizzando la classe Document.
- Quindi, seleziona la Pagina desiderata dalla raccolta Document.getPages().
- Estrarre l’annotazione Square della pagina.
- In ogni iterazione, inizializzare l’oggetto TableAbsorber e visitare la pagina selezionata utilizzando il metodo TableAbsorber.visit(Page).
- In un ciclo nidificato, scorrere l’elenco delle tabelle nella raccolta TableAbsorber.getTableList().
- Verificare se la tabella assorbita si trova nell’area della pagina desiderata.
- Per ogni AbsorbedTable nella raccolta, scorrere la raccolta di righe utilizzando AbsorbedTable.getRowList().
- Per ogni AbsorbedRow nella raccolta, scorrere la raccolta di celle utilizzando AbsorbedRow.getCellList().
- Infine, scorrere la raccolta TextFragment di ogni AbsorbedCell e stampare il testo.
L’esempio di codice seguente mostra come estrarre le tabelle da un’area specifica della pagina PDF.
// Carica il documento PDF di origine
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Ottieni il riferimento della pagina desiderata
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Crea un selettore di annotazioni
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Ottieni l'elenco delle annotazioni
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Crea un'annotazione quadrata
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Crea l'assorbitore della tabella e visita la pagina
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Scorri le tabelle
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Verifica che la tabella esista
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();
}
}
}
}
}
Ottieni una licenza gratuita
È possibile utilizzare Aspose.PDF per Java senza limitazioni di valutazione utilizzando una licenza temporanea.
Conclusione
In questo articolo, hai imparato come estrarre i dati dalle tabelle in un PDF usando Java. Inoltre, l’articolo spiegava come estrarre le tabelle da una specifica regione della pagina in PDF. Inoltre, puoi saperne di più su Aspose.PDF per Java utilizzando la documentazione. Inoltre, puoi porre le tue domande tramite il nostro forum.