Манипулирование таблицами в существующих PDF-документах
Contents
[
Hide
]
Используйте TableAbsorber, когда вам нужно найти существующие таблицы и обновить их содержание.
Замена текста внутри ячейки таблицы
Используйте этот пример, когда текст в обнаруженной ячейке должен быть обновлён без перестройки всей таблицы.
- Откройте исходный PDF в объекте Document и перейдите к странице с TableAbsorber.
- Проверьте, что целевая таблица и фрагменты текста ячеек существуют.
- Замените текст в ячейке и сохраните обновлённый документ.
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());
}
}
Замена обнаруженной таблицы новой таблицей
Используйте этот пример, когда оригинальную таблицу следует полностью заменить вновь созданной.
- Откройте исходный PDF в объекте Document и обнаружьте таблицы на странице.
- Создайте новый Table с желаемой структурой.
- Замените поглощённую таблицу и сохраните полученный 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());
}
}