Управление таблицами в существующем PDF
Управление таблицами в существующем PDF
Aspose.PDF for Python via .NET позволяет обновлять таблицы, которые уже существуют в PDF‑документе. Вы можете использовать TableAbsorber класс для поиска таблиц на странице, доступа к строкам и ячейкам, изменения текстового содержимого и сохранения обновлённого файла.
Используйте эту страницу, когда необходимо обновить существующее содержимое таблиц в PDF без воссоздания полной компоновки документа.
Поиск и замена текста в ячейках таблицы PDF
В этом примере находится первая таблица на странице 1, осуществляется доступ к первой ячейке, её текст заменяется, и сохраняется результирующий PDF.
- Откройте входной PDF.
- Создайте TableAbsorber и перейдите к странице 1.
- Убедитесь, что обнаружена хотя бы одна таблица.
- Получите первую ячейку в первой строке первой таблицы.
- Убедитесь, что ячейка содержит фрагменты текста, затем обновите первый фрагмент.
- Сохраните модифицированный PDF.
import aspose.pdf as ap
def replace_cell_text(infile: str, outfile: str) -> None:
"""Replace text in the first cell of the first detected table."""
# Open PDF document
document = ap.Document(infile)
# Create TableAbsorber object to find tables
absorber = ap.text.TableAbsorber()
# Visit first page with absorber
absorber.visit(document.pages[1])
if len(absorber.table_list) == 0:
raise ValueError("No tables were found on page 1.")
first_cell = absorber.table_list[0].row_list[0].cell_list[0]
if len(first_cell.text_fragments) == 0:
raise ValueError("The target cell has no text fragments.")
# Change text of the first text fragment in the cell
first_cell.text_fragments[0].text = "New Value"
# Save PDF document
document.save(outfile)
Заменить существующую таблицу новой таблицей
Вы также можете заменить обнаруженную таблицу вновь созданной. Этот подход полезен, когда необходимо изменить и структуру, и содержание.
Код ниже открывает PDF, находит первую таблицу на странице 1, создает заменяющую таблицу, меняет старую таблицу на новую и сохраняет результат.
import aspose.pdf as ap
def replace_table(infile: str, outfile: str) -> None:
"""Replace an entire table with a new one."""
# Open PDF document
document = ap.Document(infile)
# Create TableAbsorber object to find tables
absorber = ap.text.TableAbsorber()
# Visit first page with absorber
absorber.visit(document.pages[1])
if len(absorber.table_list) == 0:
raise ValueError("No tables were found on page 1.")
# Get first table on the page
old_table = absorber.table_list[0]
# Create new table
new_table = ap.Table()
new_table.column_widths = "100 100 100"
new_table.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, 1.0)
row = new_table.rows.add()
row.cells.add("Col 1")
row.cells.add("Col 2")
row.cells.add("Col 3")
row = new_table.rows.add()
row.cells.add("Col 12")
row.cells.add("Col 22")
row.cells.add("Col 32")
# Replace the old table with the new one
absorber.replace(document.pages[1], old_table, new_table)
# Save PDF document
document.save(outfile)