Генерация страниц
Генерация страниц
Aspose.PDF FOSS for .NET предоставляет движок компоновки на основе абзацев для создания PDF‑контента. Таблицы, плавающие блоки, заголовки/нижние колонтитулы и штампы позволяют создавать структурированные страницы без ручного построения операторов потока контента.
Добавление абзацев
Page.Paragraphs является точкой входа для добавления элементов контента.
using var doc = new Document();
var page = doc.Pages.Add();
page.Paragraphs.Add(new TextFragment("Hello, PDF!"));
doc.Save("hello.pdf");Таблицы
Table поддерживает строки, ячейки, ширины столбцов, границы и состояние текста.
var table = new Table();
table.ColumnWidths = "100 200 100";
var row = table.Rows.Add();
row.Cells.Add("Name");
row.Cells.Add("Description");
row.Cells.Add("Price");
page.Paragraphs.Add(table);Форматирование ячеек
Cells.Add возвращает Cell, где вы можете настроить границы, отступы и вложенное содержимое.
var cell = row.Cells.Add("Styled cell");
cell.Border = new BorderInfo(BorderSide.All, 0.5f);
cell.Margin = new MarginInfo(5, 5, 5, 5);Плавающие блоки
FloatingBox размещает контент по абсолютным координатам на странице.
var box = new FloatingBox(200, 100);
box.Left = 72;
box.Top = 700;
box.Paragraphs.Add(new TextFragment("Positioned text"));
page.Paragraphs.Add(box);Заголовки и колонтитулы
HeaderFooter добавляет повторяющийся контент в верхней или нижней части страниц.
var header = HeaderFooter.FromText("Document Title");
header.ApplyAsHeader(page);
var footer = HeaderFooter.FromText("Page {0}");
footer.ApplyAsFooter(page);Штампы страниц
PdfPageStamp накладывает содержимое одной страницы PDF на другую.
var stamp = new PdfPageStamp("watermark.pdf");
stamp.Put(page);Советы и лучшие практики
- Используйте
Table.ColumnWidthsкак строку значений точек, разделённых пробелами, для управления макетом. FloatingBoxполезен для абсолютного позиционирования — комбинируйте сTableдля структурированного контента.HeaderFooter.FromTextподдерживает{0}в качестве заполнителя номера страницы.- Добавьте все абзацы перед вызовом
Save— движок макета обрабатывает контент последовательно. - Используйте
BorderInfoдля добавления границ к таблицам, ячейкам и плавающим блокам.
Общие проблемы
| Issue | Cause | Fix |
|---|---|---|
| Table overflows page | Too many rows for one page | The library auto-paginates; adjust margins if needed |
| Header not appearing | ApplyAsHeader called after Save | Apply headers before saving |
| FloatingBox at wrong position | Coordinates measured from top-left in paragraph units | Verify units match your expectations |
Часто задаваемые вопросы
Могу ли я создавать многостраничные таблицы?
Да. Когда таблица превышает доступную высоту страницы, она автоматически продолжается на следующей странице.
Как добавить изображения в ячейки таблицы?
Создайте абзац Image и добавьте его в коллекцию Paragraphs ячейки.
Могу ли я импортировать данные из массива в таблицу?
Да. Используйте Table.ImportArray для заполнения таблицы из двумерного массива.
Сводка справки API
| Класс / Метод | Описание |
|---|---|
Paragraphs | Упорядоченные элементы контента на странице |
Paragraphs.Add | Добавить элемент абзаца (текст, таблица, график и т.д.) |
Table | Сеточный макет с рядами, ячейками и ширинами столбцов |
Table.ImportArray | Заполнить таблицу из массива |
Rows | Коллекция строк в таблице |
Cells | Коллекция ячеек в строке таблицы |
BorderInfo | Оформление границ для таблиц, ячеек и блоков |
FloatingBox | Контейнер контента с абсолютным позиционированием |
HeaderFooter | Повторяющийся контент заголовка или нижнего колонтитула |
HeaderFooter.FromText | Создать заголовок/нижний колонтитул из текстового шаблона |
PdfPageStamp | Наложить страницу PDF в виде штампа |