Я создаю PDF файл, используя DOMPDF. У меня есть большой контент для извлечения в PDF, нам нужен заголовок на всех страницах. Так может ли кто-нибудь позвонить, как добавить верхний и нижний колонтитулы в PDF, чтобы заголовок отображался на всех страницах с помощью DOMPDF.
Заголовок на странице PDF с использованием DOMPDF в PHP
Ответ 1
В коде 0.6.0 вы сможете использовать HTML + CSS для создания верхних и нижних колонтитулов. Есть несколько ограничений по сравнению с использованием встроенного PHP (например, ни одного заполнителя PAGE_COUNT пока), поэтому независимо от того, насколько это жизнеспособно, зависит от ваших потребностей.
В следующем коде будет создан двухстраничный документ с верхним и нижним колонтитулами:
<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
, делают поверх содержимого HTML.
Ответ 2
Итак, вы можете либо добавить следующий "встроенный 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), вы должны вызвать метод DOMPDFS get_canvas()
, который возвращает базовый 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
(просто попробуйте).