Memanipulasi tabel dalam dokumen PDF yang ada

Gunakan TableAbsorber ketika Anda perlu menemukan tabel yang ada dan memperbarui kontennya.

Mengganti teks di dalam sel tabel

Gunakan contoh ini ketika teks dalam sel yang terdeteksi harus diperbarui tanpa membangun ulang seluruh tabel.

  1. Buka PDF sumber Document dan kunjungi halaman dengan TableAbsorber.
  2. Validasi bahwa fragmen teks tabel dan sel target ada.
  3. Ganti teks sel dan simpan dokumen yang diperbarui.
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());
    }
}

Mengganti tabel yang terdeteksi dengan tabel baru

Gunakan contoh ini ketika tabel asli harus sepenuhnya diganti oleh tabel yang baru dibuat.

  1. Buka PDF sumber Document dan deteksi tabel pada halaman.
  2. Buat Table baru dengan struktur yang diinginkan.
  3. Ganti tabel yang diserap dan simpan PDF keluaran.
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());
    }
}