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