
PDF jest obecnie jednym z dominujących formatów dokumentów. Obsługuje tekst, grafikę, tabele, adnotacje i szereg innych elementów. W niektórych przypadkach może być konieczne wyodrębnienie danych z tabel w dokumentach PDF, takich jak faktury. Aby osiągnąć to programowo, w artykule omówiono sposób wyodrębniania danych z tabel w formacie PDF przy użyciu języka Java.
- Java API do wyodrębniania danych z tabel w formacie PDF
- Wyodrębnij dane z tabel w formacie PDF
- Wyodrębnij tabelę z określonego obszaru strony
Wyodrębnij dane z tabel w formacie PDF - Java API
Aspose.PDF for Java to bogate w funkcje API do tworzenia i manipulowania dokumentami PDF. Użyjemy tego API do wyodrębnienia danych z tabel w dokumentach PDF. Możesz pobrać plik JAR interfejsu API lub zainstalować go w swojej aplikacji Java przy użyciu następujących konfiguracji 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>
Ekstrakcja danych z tabel w formacie PDF w Javie
Poniżej przedstawiono kroki, aby wyodrębnić dane z tabel w pliku PDF przy użyciu języka Java.
- Najpierw załaduj dokument PDF przy użyciu klasy Document.
- Przeglądaj strony w formacie PDF za pomocą kolekcji Document.getPages().
- W każdej iteracji inicjuj obiekt TableAbsorber i odwiedzaj wybraną stronę metodą TableAbsorber.visit(Page).
- W pętli zagnieżdżonej iteruj listę tabel w kolekcji TableAbsorber.getTableList().
- Dla każdej AbsorbedTable w kolekcji wykonaj iterację w kolekcji wierszy z AbsorbedTable.getRowList().
- Dla każdego AbsorbedRow w kolekcji wykonaj iterację w kolekcji komórek z AbsorbedRow.getCellList().
- Na koniec przejrzyj kolekcję TextFragment każdego AbsorbedCell i wydrukuj tekst.
Poniższy przykładowy kod pokazuje, jak wyodrębnić tekst z tabel w formacie PDF przy użyciu języka Java.
// Załaduj źródłowy dokument PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Utwórz absrobera stołu
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Zeskanuj strony
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
    
    // Odwiedź stronę
    absorber.visit(page);
  
    // Iteruj po tabelach
   for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
        System.out.println("Table");
        
        // Iteruj przez listę wierszy
       for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
            
            // Iteruj przez listę komórek
           for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
                
                // Iteruj przez fragmenty tekstu
               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: Wyodrębnij dane tabeli z określonego obszaru strony PDF
Poniżej przedstawiono kroki, aby wyodrębnić tabelę z określonej części strony w pliku PDF przy użyciu języka Java.
- Najpierw załaduj dokument PDF przy użyciu klasy Document.
- Następnie wybierz żądaną Page z kolekcji Document.getPages().
- Wyodrębnij adnotację Kwadrat ze strony.
- W każdej iteracji inicjuj obiekt TableAbsorber i odwiedzaj wybraną stronę za pomocą metody TableAbsorber.visit(Page).
- W pętli zagnieżdżonej iteruj listę tabel w kolekcji TableAbsorber.getTableList().
- Sprawdź, czy wchłonięta tabela znajduje się w żądanym obszarze strony.
- Dla każdej AbsorbedTable w kolekcji wykonaj iterację w kolekcji wierszy, używając AbsorbedTable.getRowList().
- Dla każdego AbsorbedRow w kolekcji wykonaj iterację w kolekcji komórek, używając AbsorbedRow.getCellList().
- Na koniec przejrzyj kolekcję TextFragment każdego AbsorbedCell i wydrukuj tekst.
Poniższy przykładowy kod pokazuje, jak wyodrębnić tabele z określonego regionu strony PDF.
// Załaduj źródłowy dokument PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Uzyskaj odniesienie do żądanej strony
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Utwórz selektor adnotacji
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
        new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Pobierz listę adnotacji
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
    System.out.println("Marked tables not found..");
    return;
}
// Utwórz kwadratową adnotację
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Utwórz pochłaniacz stołu i odwiedź stronę
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Iteruj po tabelach
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
    {
        // Sprawdź, czy tabela istnieje
        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();
                }
            }
        }
    }
}
Uzyskaj bezpłatną licencję
Możesz używać Aspose.PDF for Java bez ograniczeń ewaluacyjnych przy użyciu tymczasowej licencji.
Wniosek
W tym artykule nauczyłeś się, jak wyodrębniać dane z tabel w pliku PDF przy użyciu języka Java. Ponadto w artykule omówiono sposób wyodrębniania tabel z określonego regionu strony w formacie PDF. Poza tym możesz dowiedzieć się więcej o Aspose.PDF dla Javy, korzystając z dokumentacji. Ponadto możesz zadawać pytania za pośrednictwem naszego forum.