Заголовок на странице PDF с использованием DOMPDF в PHP

Я создаю PDF-файл, используя DOMPDF. У меня есть большой контент для извлечения в PDF, нам нужен заголовок на всех страницах. Так может ли кто-нибудь позвонить, как добавить верхний и нижний колонтитулы в PDF, чтобы заголовок отображался на всех страницах с помощью DOMPDF.

В коде 0.6.0 вы сможете использовать HTML + CSS для создания верхних и нижних колонтитулов. Есть несколько ограничений по сравнению с использованием встроенного PHP (например, нет PAGE_COUNT placeholder пока), поэтому независимо от того, является ли это жизнеспособным, зависит от ваших потребностей.

Следующий код создаст двухстраничный документ с верхним и нижним колонтитулом :

<html> <head> <style> @page { margin: 180px 50px; } #header { position: fixed; left: 0px; top: -180px; right: 0px; height: 150px; background-color: orange; text-align: center; } #footer { position: fixed; left: 0px; bottom: -180px; right: 0px; height: 150px; background-color: lightblue; } #footer .page:after { content: counter(page, upper-roman); } </style> <body> <div id="header"> <h1>Widgets Express</h1> </div> <div id="footer"> <p class="page">Page </p> </div> <div id="content"> <p>the first page</p> <p style="page-break-before: always;">the second page</p> </div> </body> </html> 

Вы также можете использовать комбинацию двух стилей, если вам нужен доступ к некоторым недостающим функциям. PDF-объекты и текст, добавленные с page_text метода page_text отображаются поверх содержимого HTML.

В вики DOMPDF есть запись в FAQ : есть ли способ добавить верхние и нижние колонтитулы или номера страниц? ,

Таким образом, вы можете либо добавить следующий «встроенный PHP» -snippet на свой HTML-вход (добавьте аналогичный page_text -call для нижнего колонтитула):

 <script type="text/php"> if ( isset($pdf) ) { $font = Font_Metrics::get_font("helvetica", "bold"); $pdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); } </script> 

Если вы предпочитаете реализовать это на своей стороне вызывающего абонента (что означает непосредственно в коде PHP), вы должны вызвать метод get_canvas() DOMPDFS, который возвращает базовый PDF-рендерер, который позволяет вам вызвать метод page_text как в примере выше. Позвольте мне показать вам, что я имею в виду:

 // your dompdf setup $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); // add the header $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("helvetica", "bold"); // the same call as in my previous example $canvas->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

В конце концов вам нужно вызвать page_text после load_html (просто попробуйте).