Класс
Canvas
в первую очередь предназначен для случаев, когда вам необходимо добавить элементы в определенную предопределенную область на странице / XObject, и не предназначен для переполнения вашего контента в следующих областях.
Как описаносценарий использования - это просто преобразование HTML
в PDF
, соответствующий API для использования - это еще один метод HtmlConverter
, который позволяет преобразовать HTML
в PDF
в одну строку:
HtmlConverter.ConvertToPdf(html, pdfWriter);
UPD : разъяснения по дополнительным требованиям от @ Saeed
Различные поля для первой страницы
CSS позволяет указывать поля страницы с @page
СМИ, и эти заявления подобраны pdfHTML
. Вот пример спецификации полей страницы и как настроить их для первой страницы:
@page {
margin-top: 100pt;
margin-left: 36pt;
margin-right: 36pt;
margin-bottom: 36pt;
}
@page:first {
margin-top: 100pt;
margin-left: 36pt;
margin-right: 36pt;
margin-bottom: 36pt;
}
Как избежать разделения таблицы по нескольким страницам
CSS имеет свойство page-break-inside
, управляющее страницейвнешний вид элементов. В частности, вас интересует объявление page-break-inside: avoid;
, которое предотвращает разбиение элемента по страницам.
Вы можете применить это объявление ко всем таблицам в вашем документе:
table {
page-break-inside: avoid;
}
В качестве альтернативы, вы можетеможет создать свой собственный класс и применять его только при необходимости:
.avoid-page-breaks {
page-break-inside: avoid;
}
<table class="avoid-page-breaks">
...
</table>
Третий вариант - применить этот стиль к встроенной таблице:
<table style="page-break-inside: avoid;">
...
</table>