首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dompdf页码

dompdf页码
EN

Stack Overflow用户
提问于 2012-10-31 21:56:10
回答 3查看 26.8K关注 0票数 6

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

我已经尝试了DOMPDF的FAQ页面中提到的以下内容。但并不成功。注意:我还打开了内联PHP,并在常见问题解答中提到了它

以下是我的代码

代码语言:javascript
复制
 <?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");


 ?>

有人能给我指出这个问题吗?我哪里弄错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-02 03:33:21

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

代码语言:javascript
复制
...
$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

票数 10
EN

Stack Overflow用户

发布于 2012-11-14 19:58:22

在你使用'1/1‘获取$x的地方,当你有超过10个页面时,这将不起作用。

一种可能的解决方案是编辑"cpdf_adapter.cls.php",因此_add_page_text()函数在str_replace()之后使用了以下内容...关于第790行:

代码语言:javascript
复制
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中,我使用:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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
EN

Stack Overflow用户

发布于 2021-07-12 06:45:48

为我工作的代码。您可以根据PDF的大小自定义应放置的位置:

代码语言:javascript
复制
$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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13159645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档