Витягти дані з таблиці в PDF Java

PDF є одним із найпоширеніших форматів документів сьогодні. Він підтримує текст, графіку, таблиці, анотації та низку інших елементів. У деяких випадках вам може знадобитися витягти дані з таблиць у PDF-документах, таких як рахунки-фактури. Щоб досягти цього програмним шляхом, у статті описано, як видобувати дані з таблиць у форматі PDF за допомогою Java.

Бібліотека Java для вилучення таблиці PDF

Щоб видобути таблиці у файли PDF, ми будемо використовувати Aspose.PDF for Java. Це багатофункціональна бібліотека для створення PDF-документів і роботи з ними. Ви можете завантажити JAR бібліотеки або встановити його у своїй програмі Java, використовуючи наступні конфігурації 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>

Витягти таблиці з PDF-файлу в Java

Нижче наведено кроки для вилучення таблиць у PDF-файл на Java.

  • Спочатку завантажте PDF-документ за допомогою класу Document.
  • Переглядайте сторінки в PDF за допомогою колекції Document.getPages().
  • У кожній ітерації ініціалізуйте об’єкт TableAbsorber і відвідайте вибрану сторінку за допомогою методу TableAbsorber.visit(Page).
  • У вкладеному циклі перебирайте список таблиць у колекції TableAbsorber.getTableList().
  • Для кожного AbsorbedTable у колекції перегляньте колекцію рядків із AbsorbedTable.getRowList().
  • Для кожного AbsorbedRow у колекції перегляньте колекцію клітинок із AbsorbedRow.getCellList().
  • Нарешті, прокрутіть колекцію TextFragment кожної AbsorbedCell і надрукуйте текст.

У наведеному нижче прикладі коду показано, як видобути таблицю в PDF за допомогою Java.

// Завантажити вихідний документ PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");

// Створіть таблицю absrober
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();

// Сканувати сторінки
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
    
    // Перегляньте сторінку
    absorber.visit(page);
  
    // Ітерація по таблицях
   for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
        System.out.println("Table");
        
        // Ітерація по списку рядків
       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();
        }
    }
}

Java: видобуток таблиці PDF із певної області

Нижче наведено кроки, щоб витягнути таблицю з певної частини сторінки в PDF.

  • Спочатку завантажте PDF-документ за допомогою класу Document.
  • Потім виберіть потрібну Сторінку з колекції Document.getPages().
  • Витягніть квадратну анотацію сторінки.
  • У кожній ітерації ініціалізуйте об’єкт TableAbsorber і відвідайте вибрану сторінку за допомогою методу TableAbsorber.visit(Page).
  • У вкладеному циклі перегляньте список таблиць у колекції TableAbsorber.getTableList().
  • Перевірте, чи поглинена таблиця знаходиться в потрібній області сторінки.
  • Для кожного AbsorbedTable у колекції виконайте ітерацію по колекції рядків за допомогою AbsorbedTable.getRowList().
  • Для кожного AbsorbedRow у колекції виконайте ітерацію по колекції клітинок за допомогою AbsorbedRow.getCellList().
  • Нарешті, прокрутіть колекцію TextFragment кожної AbsorbedCell і надрукуйте текст.

У наведеному нижче прикладі коду показано, як видобувати таблиці з певної області сторінки PDF.

// Завантажити вихідний документ PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");

// Отримати посилання на потрібну сторінку
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);

// Створіть селектор анотацій
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
        new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));

// Отримати список анотацій
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
    System.out.println("Marked tables not found..");
    return;
}

// Створіть квадратну анотацію
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);

// Створіть абсорбер таблиці та відвідайте сторінку
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);

// Ітерація по таблицях
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
    {
        // Перевірити наявність таблиці
        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();
                }
            }
        }
    }
}

Безкоштовна бібліотека Java PDF для вилучення таблиць

Ви можете отримати безкоштовну тимчасову ліцензію, щоб видобувати таблиці з файлу PDF без будь-яких обмежень.

Дослідіть бібліотеку Java PDF

Ви можете дізнатися більше про бібліотеку Java PDF, використовуючи документацію. Крім того, ви можете поставити свої запитання через наш форум.

Висновок

У цій статті ви дізналися, як видобувати таблиці в PDF за допомогою Java. Крім того, у статті описано, як витягти таблиці з певної області сторінки в PDF. Ви можете легко використовувати нашу бібліотеку PDF і надані зразки коду у своїй програмі.

Дивись також