Как сделать нижний колонтитул sh на следующей странице, если контент перекрывает его - PullRequest
0 голосов
/ 30 мая 2020

У меня есть документ HTML, который я хочу преобразовать в PDF с Mpdf версии 7.

Структура HTML:

<header>...</header>
<section>...</section>
<footer>...</footer>

И CSS - :

<style>
    @page {
        size: 21cm 29.7cm;
        margin: 0.5cm;
        padding: 0;
    }

    section {
        font-family: 'helvetica', sans-serif;
        margin: 0;
        padding: 0;
    }

    table {
        margin: 0;
        padding: 0;
        font-family: 'helvetica', sans-serif;
        border-collapse: collapse;
    }

    header {
        margin-bottom: 10pt;
    }

    footer {
        position: static;
        bottom: 10pt;
        margin: 0;
        padding: 0;
    }
</style>

Внутри <section> У меня есть таблица со строками, сгенерированными во время выполнения.

Мой PHP код очень базовый c

$pdf = new \Mpdf\Mpdf();
$pdf->writeHTML($html);
$pdf->Output($filepath, 'F');

Все хорошо работает с несколькими строками или многими строками, но в определенных условиях случается, что последние строки перекрывают нижний колонтитул.

Я бы хотел sh разместить нижний колонтитул внизу следующей страницы, когда это произойдет.

Я пробовал добавлять нижний колонтитул с помощью $pdf->SetHTMLFooter() и динамически добавлять страницу после N строк, но результат не очень точный, поскольку некоторые строки могут быть многострочными. Я также пробовал $pdf->setAutoBottomMargin = 'stretch', но ничего не изменилось.

Есть предложения? Спасибо.

1 Ответ

0 голосов
/ 10 июня 2020

html код

  <htmlpageheader name="header">
       <h1>your header</h1>
   </htmlpageheader>

         <div>
             main body
        </div>

      <htmlpagefooter name="footer">
         <h1>your footer</h1>
      </htmlpagefooter>

CSS

@page 
{
    header: header;
    footer: footer;
    margin-top: 89mm;  
    margin-bottom: 61mm;
}

установите собственное поле

php код

   $pdf = new \Mpdf\Mpdf();
    $html = file_get_contents('path');
    $pdf->writeHTML($html);
    $pdf->Output();
...