Заголовок на странице PDF с использованием DOMPDF в PHP - PullRequest
33 голосов
/ 20 сентября 2011

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

Ответы [ 3 ]

60 голосов
/ 20 сентября 2011

В коде 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.

19 голосов
/ 20 сентября 2011

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

Таким образом, вы можете добавить следующий «inline 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 (просто попробуйте).

0 голосов
/ 11 июля 2018

Вам нужен этот код, я надеюсь, вам поможет

Привет ...

# Instanciamos un objeto de la clase DOMPDF.
$dompdf = new DOMPDF();

# Definimos el tamaño y orientación del papel que queremos.
# O por defecto cogerá el que está en el fichero de configuración.
$dompdf->set_paper("Letter", "portrait");

# Cargamos el contenido HTML.
$dompdf->load_html(utf8_decode($html));

# Renderizamos el documento PDF.
$dompdf->render();

#Esto es lo que imprime en el PDF el numero de paginas
$canvas = $dompdf->get_canvas();
$footer = $canvas->open_object();
$w = $canvas->get_width();
$h = $canvas->get_height();
$canvas->page_text($w-60,$h-28,"Página {PAGE_NUM} de {PAGE_COUNT}", Font_Metrics::get_font('helvetica'),6);
$canvas->page_text($w-590,$h-28,"El pie de p&aacute;gina del lado izquiero, Guadalajara, Jalisco C.P. XXXXX Tel. XX (XX) XXXX XXXX", Font_Metrics::get_font('helvetica'),6);

$canvas->close_object();
$canvas->add_object($footer,"all");

# Enviamos el fichero PDF al navegador.
//$dompdf->stream('FicheroEjemplo.pdf');

# Para grabar en fichero en ruta especifica
$output = $dompdf->output();
file_put_contents('ejemplo.pdf',$output);

 #Liberamos 
unset($dompdf);
...