Search code examples
phppdfpdf-generation

How to add Header and Footer in the created PDF file in php


I am using this site as reference: http://www.ros.co.nz/pdf/

I read the readme.pdf but haven't found any function that instructs how to add header and footers in every page in the pdf.


Solution

  • Edited after long time:

    Finally adding answer about latest version of R&OS PDF with the help of this example.

    <?php
    
    include 'path/to/Cezpdf.php';
    
    $pdf = new Cezpdf('a4', 'portrait', 'none', null);
    
    $all = $pdf->openObject();
    $pdf->saveState();
    
    // header line and text
    $pdf->addText(20, 800, 14, 'This is header text');
    $pdf->line(20, 790, 580, 790);
    
    // footer line and text
    $pdf->line(20, 40, 578, 40);
    $pdf->addText(20, 30, 8, 'Left side header text');
    $pdf->addText(580, 30, 8, 'Right side header text', 0, 'right');
    
    $pdf->restoreState();
    $pdf->closeObject();
    
    $pdf->addObject($all,'all');
    
    $pdf->ezSetMargins(100, 100, 50, 50);
    
    // content text
    $text = str_repeat("This is your content.\n", 100);
    $pdf->ezText($text, 0, ['justification' => 'full']);
    
    // output
    $pdf->ezStream(['Content-Disposition' => 'mypdf.pdf']);
    
    ?>
    

    What about using dompdf:

    Try this for header and footer:

    You can add images and shapes (line, rectangles, etc.) to every page using PDF 'objects'. A PDF object captures all rendering commands as a sort of template that can then be added to multiple pages:

    <script type="text/php">
    
    if ( isset($pdf) ) {
    
      // Open the object: all drawing commands will
      // go to the object instead of the current page
      $footer = $pdf->open_object();
    
      $w = $pdf->get_width();
      $h = $pdf->get_height();
    
      // Draw a line along the bottom
      $y = $h - 2 * $text_height - 24;
      $pdf->line(16, $y, $w - 16, $y, $color, 1);
    
      // Add an initals box
      $font = Font_Metrics::get_font("helvetica", "bold");
      $text = "Initials:";
      $width = Font_Metrics::get_text_width($text, $font, $size);
      $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color);
      $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5);
    
      // Add a logo
      $img_w = 2 * 72; // 2 inches, in points
      $img_h = 1 * 72; // 1 inch, in points -- change these as required
      $pdf->image("print_logo.png", "png", ($w - $img_w) / 2.0, $y - $img_h, $img_w, $img_h);
    
      // Close the object (stop capture)
      $pdf->close_object();
    
      // Add the object to every page. You can
      // also specify "odd" or "even"
      $pdf->add_object($footer, "all");
    }
    
    </script>