【问题标题】:dompdf page numberdompdf页码
【发布时间】:2012-10-21 00:16:37
【问题描述】:

您好,我正在使用 DOMPDF 生成 PDF 文件,我想知道如何获取页码。

我在 DOMPDF 的常见问题页面中提到了以下内容。并且没有成功。 注意:我也打开了内联 PHP 以及它在常见问题解答中提到的

以下是我的代码

 <?php
require_once("dompdf/dompdf_config.inc.php");


ob_start();
//be sure this file exists, and works outside of web context etc.)


$dompdf = new DOMPDF();


$html="     <script type='text/php'>";
        if ( isset($pdf) ) { 
            $font = Font_Metrics::get_font("yourfont", "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);
        } 
$html.="        </script>";

$html .="
        aaaaa<br/>aaaaaa<br/>aaaaaa<br/>aaaaa<br/>aaaaaa<br/>aaaaaa<br/>aaaa<br/>aaaaa<br/>aaaaaa<br/>aaaaa<br/>
        aaaaa<br/>aaaaaaa<br/>aaaaaa<br/>
aaaaa<br/>aaaaaa<br/>
        aaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaaa<br/>aaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaaa<br/>aaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaaa<br/>aaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaaaa<br/>aaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>aaaaaaaaaaaaaaaaa<br/>
        </body></html>"; 


$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");


 ?>

有人可以指出这个问题吗?我哪里做错了

【问题讨论】:

    标签: php dompdf


    【解决方案1】:

    对我有用的代码。您可以根据 PDF 的大小自定义应位于的位置:

    $pdf->load_html($html);
    $pdf->render();
    $dompdf = $pdf->getDomPDF();
    $color = array(0, 0, 0);
    $font = null;
    $size = 10;
    
    $canvas = $dompdf->get_canvas();
    $canvas->page_text(0, 0, "{PAGE_NUM} of {PAGE_COUNT}", $font, $size, $color);
    

    请记住,颜色数组不包含 RGB 值。您可以从 RYB 行 here 中获取适当的值作为 (0,1) 范围内的值,即 array(0.46,0.46,0.46)

    【讨论】:

      【解决方案2】:

      如果您使用 '1/1' 来获取 $x,那么当您的页面超过 10 个时,这将不起作用。

      一个可能的解决方案确实意味着编辑“cpdf_adapter.cls.php”,因此 _add_page_text() 函数在 str_replace() 之后使用了以下内容...关于第 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));
      

      这个想法是您可以传入负 x/y 坐标,它们将从右/下边缘开始工作。

      然后在发送到 DOMPDF 的 HTML 中,我使用了:

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

      或者如果你想在 px 中指定 x/y:

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

      【讨论】:

        【解决方案3】:

        您正在将内联脚本作为 PHP 页面的一部分运行,而不是将其传递给 dompdf。您的代码可以写成如下(截断到相关部分):

        ...
        $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>
        ";
        ...
        

        请注意,内联脚本当前必须出现在 BODY 元素内。否则在文档处理过程中将被忽略。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-10
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 2017-05-07
          • 2013-08-10
          • 1970-01-01
          相关资源
          最近更新 更多