Manipular tablas en documentos PDF existentes
Contents
[
Hide
]
Utilice TableAbsorber cuando necesites localizar tablas existentes y actualizar su contenido.
Reemplazar texto dentro de una celda de tabla
Utilice este ejemplo cuando el texto en una celda detectada deba actualizarse sin reconstruir toda la tabla.
- Abra el PDF de origen
Documenty visite la página conTableAbsorber. - Valide que la tabla objetivo y los fragmentos de texto de la celda existan.
- Reemplace el texto de la celda y guarde el documento actualizado.
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());
}
}
Reemplazar una tabla detectada por una tabla nueva
Utilice este ejemplo cuando la tabla original deba ser reemplazada completamente por una recién construida.
- Abra el PDF de origen
Documenty detecte tablas en la página. - Cree una nueva
Tablecon la estructura deseada. - Reemplace la tabla absorbida y guarde el PDF de salida.
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());
}
}