Header in PDF page using DOMPDF in PHP
In the 0.6.0 code you will be able to use HTML+CSS to generate headers and footers. There are a few limitations when compared to using inline PHP (e.g. no PAGE_COUNT placeholder yet), so whether or not this is viable depends on your needs.
The following code will produce a two-page document with a header and footer:
<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>
You could also use a combination of the two styles if you needed access to some of the missing functionality. PDF objects and text added using the page_text
method render on top of the HTML content.
There is a FAQ entry on the DOMPDF wiki: Is there a way to add headers and footers or page numbers?.
So you can either add the following "inline PHP"-snippet to your HTML-input (add a similar page_text
-call for your footer):
<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>
If you rather want to implement this on your caller-side (meaning in the PHP code directly) you have to call the DOMPDFS's get_canvas()
-method which returns the underlying PDF-Renderer which allows you to call the page_text
method like in the example above. Let me show you what I mean:
// 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));
Eventually you have to call page_text
after load_html
(just try it out).
You need This code, I hope help you
Regards...
# 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á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);