既存の PDF ドキュメント内のテーブルの操作

既存のテーブルを検索し、その内容を更新する必要がある場合は、TableAbsorber を使用してください。

テーブルセル内のテキストの置換

検出されたセル内のテキストを、テーブル全体を再構築せずに更新する必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開き、TableAbsorber を使用して対象のページにアクセスしてください。
  2. 対象のテーブルおよびセルのテキストフラグメントが存在することを検証してください。
  3. セルのテキストを置換し、更新されたドキュメントを保存してください。
public static void replaceCells(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        TableAbsorber absorber = new TableAbsorber();
        absorber.visit(document.getPages().get_Item(1));

        if (absorber.getTableList().isEmpty()) {
            throw new IllegalStateException("No tables were found on page 1.");
        }
        if (absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0).getTextFragments().size() == 0) {
            throw new IllegalStateException("The target cell has no text fragments.");
        }

        absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0)
                .getTextFragments().get_Item(1).setText("New Value");
        document.save(outputFile.toString());
    }
}

検出されたテーブルを新しいテーブルに置き換える

元のテーブルを新しく作成したテーブルで完全に置き換える必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開き、ページ上のテーブルを検出してください。
  2. 望ましい構造を持つ新しい Table を作成してください。
  3. 吸収されたテーブルを新しいテーブルで置き換え、出力 PDF を保存してください。
public static void replaceTable(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        TableAbsorber absorber = new TableAbsorber();
        absorber.visit(document.getPages().get_Item(1));

        if (absorber.getTableList().isEmpty()) {
            throw new IllegalStateException("No tables were found on page 1.");
        }

        AbsorbedTable oldTable = absorber.getTableList().get(0);
        Table newTable = new Table();
        newTable.setColumnWidths("100 100 100");
        newTable.setDefaultCellBorder(new BorderInfo(BorderSide.All, 1.0f));

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

        absorber.replace(document.getPages().get_Item(1), oldTable, newTable);
        document.save(outputFile.toString());
    }
}