dompdf page number

前端 未结 2 633
旧巷少年郎
旧巷少年郎 2020-12-17 01:44

Hi I am using DOMPDF to generate PDF file, I would like to know how to get page number.

I have try the following as mention in FAQ page of DOMPDF. and not successful

相关标签:
2条回答
  • 2020-12-17 02:23

    Where you have '1/1' being used to get $x, this won't work when you have more than 10 pages.

    A possible solution does mean editing "cpdf_adapter.cls.php", so the _add_page_text() function used the following just after the str_replace()... about line 790:

    if ($x < 0) $x = (($this->_width + $x) - $this->get_text_width($text, $font, $size));
    if ($y < 0) $y = (($this->_height + $y) - $this->get_font_height($font, $size));
    

    The idea is that you can pass in negative x/y coords, and they will work from the right/bottom edges.

    Then in the HTML thats sent to DOMPDF, I used:

    <script type="text/php">
       $pdf->page_text(-30, -32, "{PAGE_NUM} of {PAGE_COUNT}", Font_Metrics::get_font("serif"), 10, array(0,0,0));
    </script>
    

    Or if you want to specify the x/y in px:

    <script type="text/php">
       $pdf->page_text(((-30 * 72) / DOMPDF_DPI), ((-32 * 72) / DOMPDF_DPI), "{PAGE_NUM} of {PAGE_COUNT}", Font_Metrics::get_font("serif"), 10, array(0,0,0));
    </script>
    
    0 讨论(0)
  • 2020-12-17 02:27

    You are running your inline script as part of the PHP page instead of passing it to dompdf. Your code could be written as follows (truncated to the relevant section):

    ...
    $html="
    <html>
      <body>
        <script type='text/php'>
          if ( isset($pdf) ) { 
            $font = Font_Metrics::get_font('helvetica', 'normal');
            $size = 9;
            $y = $pdf->get_height() - 24;
            $x = $pdf->get_width() - 15 - Font_Metrics::get_text_width('1/1', $font, $size);
            $pdf->page_text($x, $y, '{PAGE_NUM}/{PAGE_COUNT}', $font, $size);
          } 
        </script>
    ";
    ...
    

    Note that inline script must currently appear inside the BODY element. Otherwise it will be ignored during document processing.

    There are other ways to achieve what you want as well.

    0 讨论(0)
提交回复
热议问题