Manipular tabelas em documentos PDF existentes
Contents
[
Hide
]
Use TableAbsorber quando precisar localizar tabelas existentes e atualizar seu conteúdo.
Substituir texto dentro de uma célula de tabela
Use este exemplo quando o texto em uma célula detectada precisar ser atualizado sem reconstruir toda a tabela.
- Abra o PDF de origem em um objeto Document e visite a página com TableAbsorber.
- Valide se a tabela alvo e os fragmentos de texto da célula existem.
- Substitua o texto da célula e salve o documento atualizado.
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());
}
}
Substituir uma tabela detectada por uma nova tabela
Use este exemplo quando a tabela original deve ser totalmente substituída por uma recém‑construída.
- Abra o PDF de origem em um objeto Document e detecte tabelas na página.
- Crie um novo Table com a estrutura desejada.
- Substitua a tabela absorvida e salve o PDF de saída.
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());
}
}