操作现有PDF中的表格

操作现有PDF中的表格

Aspose.PDF for Java 支持的最早功能之一就是处理表格的能力,它提供了在从头开始生成的PDF文件或任何现有PDF文件中添加表格的强大支持。 你还可以将表格与数据库集成(DOM)来创建基于数据库内容的动态表格。在此新版本中,我们实现了搜索和解析PDF文档页面上已有简单表格的新功能。一个名为Aspose.PDF.Text.TableAbsorber的新类提供了这些功能。TableAbsorber的使用与现有的TextFragmentAbsorber类非常相似。

以下代码片段展示了更新特定表格单元格内容的步骤。

package com.aspose.pdf.examples;

import com.aspose.pdf.*;

public class ExampleManipulate {

    private static String _dataDir = "/home/admin1/pdf-examples/Samples/";

    public static void ManipulateTables() {

        // 加载现有的PDF文件
        Document pdfDocument = new Document(_dataDir + "input.pdf");
        // 创建TableAbsorber对象以查找表格
        TableAbsorber absorber = new TableAbsorber();

        // 使用吸收器访问第一页
        absorber.visit(pdfDocument.getPages().get_Item(1));

        // 获取页面上第一个表格的访问权,它们的第一个单元格和其中的文本片段
        TextFragment fragment = absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0)
                .getTextFragments().get_Item(1);

        // 更改单元格中第一个文本片段的文本
        fragment.setText("hi world");

        pdfDocument.save(_dataDir + "ManipulateTable_out.pdf");
    }

用新表替换PDF文档中的旧表

如果您需要找到特定的表并用所需的表替换它,可以使用 TableAbsorber 类的 Replace() 方法来实现。

以下示例演示了在PDF文档中替换表的功能:

public static void ReplaceOldTableWithNew() {

        // 加载现有PDF文档
        Document pdfDocument = new Document(_dataDir + "Table_input2.pdf");

        // 创建TableAbsorber对象以查找表
        TableAbsorber absorber = new TableAbsorber();

        Page page = pdfDocument.getPages().get_Item(1);

        // 使用吸收器访问第一页
        absorber.visit(page);

        // 获取页面上的第一个表
        AbsorbedTable table = absorber.getTableList().get(0);

        // 创建新表
        Table newTable = new Table();
        newTable.setColumnWidths("100 100 100");
        newTable.setDefaultCellBorder (new BorderInfo(BorderSide.All, 1F));

        Row row = newTable.getRows().add();
        row.getCells().add("Col 1");
        row.getCells().add("Col 2");
        row.getCells().add("Col 3");

        // 用新表替换旧表
        absorber.replace(page, table, newTable);

        // 保存文档
        pdfDocument.save(_dataDir + "TableReplaced_out.pdf");
        
    }

}