Header in PDF page using DOMPDF in PHP

前端 未结 3 1982
终归单人心
终归单人心 2020-11-27 02:26

I am creating a PDF file using DOMPDF. I have a big content to extract in PDF, we need some header in all the pages. So can anyone telme how to add a header and footer in th

相关标签:
3条回答
  • 2020-11-27 03:30

    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.

    0 讨论(0)
  • 2020-11-27 03:30

    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).

    0 讨论(0)
  • 2020-11-27 03:30

    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&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);
    
    0 讨论(0)
提交回复
热议问题