PDF je dnes jedním z hlavních formátů dokumentů. Podporuje text, grafiku, tabulky, anotace a řadu dalších prvků. V určitých případech může být nutné extrahovat data z tabulek v dokumentech PDF, jako jsou faktury. Chcete-li toho dosáhnout programově, článek popisuje, jak extrahovat data z tabulek v PDF pomocí Java.
- Java API pro extrahování dat z tabulek v PDF
- Extrahujte data z tabulek ve formátu PDF
- Extrahujte tabulku ze specifické oblasti stránky
Knihovna Java pro extrahování tabulky PDF
K extrahování tabulek v souborech PDF použijeme Aspose.PDF for Java. Je to knihovna bohatá na funkce pro vytváření a manipulaci s dokumenty PDF. JAR knihovny si můžete stáhnout nebo jej nainstalovat do své Java aplikace pomocí následujících konfigurací 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>22.12</version>
</dependency>
Extrahujte tabulky z PDF v Javě
Následují kroky k extrahování tabulek do PDF v Javě.
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Procházejte stránky v PDF pomocí kolekce Document.getPages().
- 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.getTableList().
- Pro každou AbsorbedTable v kolekci iterujte kolekci řádků z AbsorbedTable.getRowList().
- Pro každý AbsorbedRow v kolekci iterujte kolekci buněk z AbsorbedRow.getCellList().
- Nakonec projděte kolekci TextFragment každé AbsorbedCell a vytiskněte text.
Následující ukázka kódu ukazuje, jak extrahovat tabulku v PDF pomocí Java.
// Načíst zdrojový dokument PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Vytvořte absrober tabulky
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Skenujte stránky
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// Zobrazit stránku
absorber.visit(page);
// Iterujte tabulky
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Iterujte seznam řádků
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Iterovat seznam buněk
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Iterujte fragmenty textu
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: Extrahujte tabulku PDF z konkrétní oblasti
Následují kroky k extrahování tabulky z určité části stránky v PDF.
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Poté vyberte požadovanou Stránka z kolekce Document.getPages().
- Extrahujte čtvercovou anotaci stránky.
- 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.getTableList().
- Zkontrolujte, zda je absorbovaná tabulka v požadované oblasti stránky.
- Pro každou AbsorbedTable v kolekci iterujte kolekci řádků pomocí AbsorbedTable.getRowList().
- Pro každý AbsorbedRow v kolekci iterujte kolekci buněk pomocí AbsorbedRow.getCellList().
- Nakonec projděte kolekci TextFragment každého AbsorbedCell a vytiskněte text.
Následující ukázka kódu ukazuje, jak extrahovat tabulky z konkrétní oblasti stránky PDF.
// Načíst zdrojový dokument PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Získejte odkaz na požadovanou stránku
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Vytvořte selektor anotací
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Získejte seznam anotací
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Vytvořte čtvercovou anotaci
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Vytvořte absorbér tabulky a navštivte stránku
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Iterujte tabulky
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Zkontrolujte, zda tabulka existuje
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();
}
}
}
}
}
Zdarma Java PDF knihovna pro extrahování tabulek
Můžete získat bezplatnou dočasnou licenci pro extrahování tabulek ze souboru PDF bez jakýchkoli omezení.
Prozkoumejte Java PDF Library
Více o Java PDF knihovně se můžete dozvědět pomocí dokumentace. Kromě toho můžete klást své dotazy prostřednictvím našeho fóra.
Závěr
V tomto článku jste se naučili, jak extrahovat tabulky do PDF pomocí Java. Dále se článek zabýval tím, jak extrahovat tabulky z konkrétní oblasti stránky v PDF. Ve své aplikaci můžete snadno použít naši knihovnu PDF a poskytnuté ukázky kódu.