Манипулирование таблицами в существующих PDF

Манипулирование таблицами в существующих PDF

Одной из самых ранних функций, поддерживаемых Aspose.PDF для .NET, является возможность работы с таблицами, и она обеспечивает отличную поддержку добавления таблиц в создаваемые с нуля или любые существующие PDF-файлы. Вы также получаете возможность интеграции таблицы с базой данных (DOM) для создания динамических таблиц на основе содержимого базы данных. В этом новом выпуске мы реализовали новую функцию поиска и анализа простых таблиц, которые уже существуют на странице документа PDF. Новый класс под названием Aspose.PDF.Text.TableAbsorber предоставляет эти возможности. Использование TableAbsorber очень похоже на существующий класс TextFragmentAbsorber. Следующий фрагмент кода показывает шаги по обновлению содержимого в конкретной ячейке таблицы.

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к каталогу документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Tables();

// Загрузить существующий PDF-файл
Document pdfDocument = new Document(dataDir + "input.pdf");
// Создать объект TableAbsorber для поиска таблиц
TableAbsorber absorber = new TableAbsorber();

// Посетить первую страницу с absorber
absorber.Visit(pdfDocument.Pages[1]);

// Получить доступ к первой таблице на странице, их первой ячейке и текстовым фрагментам в ней
TextFragment fragment = absorber.TableList[0].RowList[0].CellList[0].TextFragments[1];

// Изменить текст первого текстового фрагмента в ячейке
fragment.Text = "привет мир";
dataDir = dataDir + "ManipulateTable_out.pdf";
pdfDocument.Save(dataDir);

Замените старую таблицу на новую в документе PDF

Если вам нужно найти определенную таблицу и заменить ее желаемой, вы можете использовать метод Replace() класса TableAbsorber для этого. Следующий пример демонстрирует функциональность замены таблицы внутри документа PDF:

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Tables();

// Загрузить существующий документ PDF
Document pdfDocument = new Document(dataDir + @"Table_input2.pdf");

// Создать объект TableAbsorber для поиска таблиц
TableAbsorber absorber = new TableAbsorber();

// Посетить первую страницу с absorber
absorber.Visit(pdfDocument.Pages[1]);

// Получить первую таблицу на странице
AbsorbedTable table = absorber.TableList[0];

// Создать новую таблицу
Table newTable = new Table();
newTable.ColumnWidths = "100 100 100";
newTable.DefaultCellBorder = new BorderInfo(BorderSide.All, 1F);

Row row = newTable.Rows.Add();
row.Cells.Add("Col 1");
row.Cells.Add("Col 2");
row.Cells.Add("Col 3");

// Заменить таблицу на новую
absorber.Replace(pdfDocument.Pages[1], table, newTable);

// Сохранить документ
pdfDocument.Save(dataDir + "TableReplaced_out.pdf");