Мы хотели бы сообщить вам, что вы не можете напрямую рассчитать размер существующей части HTML, и API не предоставляет функциональные возможности для добавления разрывов страниц во время рендеринга, поскольку это приведет к полному пересчету макета. Однако вы можете добавить принудительные разрывы страниц с помощью правил CSS: «page-break-before: всегда; page-break-after: всегда;». Чтобы получить разрыв страницы перед вторым заголовком, необходимо добавить атрибут стиля к следующему элементу, как показано ниже:
<p style="page-break-before: always;">HEADER 2</p>
Об обнаружении разрыва страницы в PDF-документе вы можете отследить разрывы страницы, если создадите устройство, производное от PdfDevice, как показано ниже:
class MyDevice : PdfDevice
{
public MyDevice(PdfRenderingOptions options, string file)
: base(options, file)
{
}
public override void BeginPage(SizeF size)
{
//This method is called at the beginning of new page.
base.BeginPage(size);
}
}
Чтобы содержимое HEADER повторялось на каждой странице перед содержимым таблиц, его следует поместить в элемент thead
:
<table>
<thead>
<tr>
<td>
This content is repeated.
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Table content.
</td>
</tr>
</tbody>
</table>
Но это будет работать, только если пользователь удалит ".pdf-body .chart-container .charts {display: inline-block;}" из style.css, потому что таблицы не поддерживают повторение заголовков внутри таких блоков. Это поведение описано в документации HTML и реализовано в браузере Firefox. Кроме того, невозможно одновременно прикрепить один заголовок к трем различным таблицам.