您好,我正在使用DOMPDF生成PDF文件,我想知道如何获得页码。
我已经尝试了DOMPDF的FAQ页面中提到的以下内容。但并不成功。注意:我还打开了内联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");
?>有人能给我指出这个问题吗?我哪里弄错了?
发布于 2012-11-02 03:33:21
您将内联脚本作为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元素中。否则,它将在文档处理过程中被忽略。
发布于 2012-11-14 19:58:22
在你使用'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>发布于 2021-07-12 06:45:48
为我工作的代码。您可以根据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)。
https://stackoverflow.com/questions/13159645
复制相似问题