從 PDF Java 中的表中提取數據

PDF 是當今的裁決文件格式之一。它支持文本、圖形、表格、註釋和一系列其他元素。在某些情況下,您可能需要從 PDF 文檔(例如發票)中的表格中提取數據。為了以編程方式實現這一點,本文介紹瞭如何使用 Java 從 PDF 中的表格中提取數據。

從 PDF 表格中提取數據 - Java API

Aspose.PDF for Java 是一個功能豐富的 API,用於創建和操作 PDF 文檔。我們將使用此 API 從 PDF 文檔中的表格中提取數據。您可以 下載 API 的 JAR 或使用以下 Maven 配置將其安裝在您的 Java 應用程序中。

<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>

在 Java 中從 PDF 中的表格中提取數據

以下是使用 Java 從 PDF 中的表格中提取數據的步驟。

以下代碼示例顯示瞭如何使用 Java 從 PDF 中的表格中提取文本。

// 加載源 PDF 文檔
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");

// 創建表吸收器
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頁面的特定區域提取表格數據

以下是使用 Java 從 PDF 頁面的特定部分提取表格的步驟。

以下代碼示例展示瞭如何從 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();
                }
            }
        }
    }
}

獲得免費許可證

你可以使用 Aspose.PDF for Java 而沒有使用臨時許可的評估限制。

結論

在本文中,您學習瞭如何使用 Java 從 PDF 中的表格中提取數據。此外,本文還介紹瞭如何從 PDF 頁面的特定區域提取表格。此外,您可以使用 文檔 了解更多關於 Aspose.PDF for Java 的信息。此外,您可以通過我們的 論壇 提問。

也可以看看