
PDF är ett av de härskande dokumentformaten nu för tiden. Den stöder text, grafik, tabeller, kommentarer och en rad andra element. I vissa fall kan du behöva extrahera data från tabellerna i PDF-dokument såsom fakturor. För att uppnå detta programmatiskt täcker artikeln hur man extraherar data från tabeller i PDF med Java.
- Java API för att extrahera data från tabeller i PDF
- Extrahera data från tabeller i PDF
- Extrahera tabell från ett specifikt område på sidan
Java-bibliotek för att extrahera PDF-tabell
För att extrahera tabeller i PDF-filer kommer vi att använda Aspose.PDF för Java. Det är ett funktionsrikt bibliotek för att skapa och manipulera PDF-dokument. Du kan antingen ladda ner bibliotekets JAR eller installera den i din Java-applikation med följande Maven-konfigurationer.
<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>22.12</version>
</dependency>
Extrahera tabeller från en PDF i Java
Följande är stegen för att extrahera tabeller i en PDF-fil i Java.
- Ladda först PDF-dokumentet med klassen Dokument.
- Bläddra igenom sidorna i PDF med Document.getPages() samlingen.
- I varje iteration, initiera TableAbsorber-objektet och besök den valda sidan med metoden TableAbsorber.visit(Page).
- I en kapslad loop, iterera genom listan med tabeller i samlingen TableAbsorber.getTableList().
- För varje AbsorbedTable i samlingen, iterera genom samlingen av rader från AbsorbedTable.getRowList().
- För varje AbsorbedRow i samlingen, iterera genom samlingen av celler från AbsorbedRow.getCellList().
- Slutligen, gå igenom TextFragment-samlingen för varje AbsorbedCell och skriv ut texten.
Följande kodexempel visar hur man extraherar en tabell i PDF med Java.
// Ladda käll PDF-dokument
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Skapa en tabellabsorberare
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Skanna sidor
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// Besök sidan
absorber.visit(page);
// Iterera genom tabeller
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Iterera genom listan med rader
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Iterera genom celllistan
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Iterera genom textfragment
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: Extrahera PDF-tabell från ett specifikt område
Följande är stegen för att extrahera tabeller från en specifik del av sidan i en PDF.
- Ladda först PDF-dokumentet med klassen Document.
- Välj sedan önskad Page från samlingen Document.getPages().
- Extrahera kvadratanteckningen på sidan.
- Initiera objektet TableAbsorber i varje iteration och besök den valda sidan med metoden TableAbsorber.visit(Page).
- I en kapslad loop, iterera genom listan med tabeller i samlingen TableAbsorber.getTableList().
- Kontrollera om den absorberade tabellen är i önskat sidområde.
- För varje AbsorbedTable i samlingen, iterera genom samlingen av rader med AbsorbedTable.getRowList().
- För varje AbsorbedRow i samlingen, iterera genom samlingen av celler med AbsorbedRow.getCellList().
- Slutligen, gå igenom TextFragment-samlingen för varje AbsorbedCell och skriv ut texten.
Följande kodexempel visar hur man extraherar tabeller från en specifik region på PDF-sidan.
// Ladda käll PDF-dokument
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Få referens till önskad sida
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Skapa en anteckningsväljare
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Få en lista med kommentarer
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Skapa en kvadratisk anteckning
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Skapa bordsabsorbent och besök sidan
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Iterera genom tabeller
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Kontrollera att tabellen finns
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();
}
}
}
}
}
Gratis Java PDF-bibliotek för att extrahera tabeller
Du kan få en gratis temporär licens för att extrahera tabeller från en PDF-fil utan några begränsningar.
Utforska Java PDF-bibliotek
Du kan lära dig mer om Java PDF-biblioteket med hjälp av dokumentationen. Dessutom kan du ställa dina frågor via vårt forum.
Slutsats
I den här artikeln har du lärt dig hur du extraherar tabeller i en PDF med Java. Dessutom behandlade artikeln hur man extraherar tabeller från en specifik del av sidan i PDF. Du kan enkelt använda vårt PDF-bibliotek och de medföljande kodexemplen i din ansökan.