我在下面的代码中,将页码完美地添加到文档右下角的每个页面中。
我有一个不需要页码的页眉,所以想跳过它的号码。
有没有办法做到这一点?或者至少将代码修改为page_num + 1,page_count-1,然后将标题页面翻转以使其不显示?
$dompdf->render();
$canvas = $dompdf->get_canvas();
$font = Font_Metrics::get_font("helvetica", "bold");
$canvas->page_text(522, 770, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 10, array(0,0,0));
答案 0 :(得分:0)
您无法使用SECRET_KEY
方法执行此操作,因为此方法会在所有页面上应用指定的文本。您想要使用的是page_text()
方法,它为您提供类似于dompdf的嵌入式脚本的功能,在所有页面上运行。
由于您只需要减去第一页,您只需从当前页面和页面总数中减去一个即可获得正确的页码。
在dompdf 0.6.2或更早版本中尝试以下操作:
page_script()
从dompdf 0.7.0开始,情况有点不同:
$dompdf->render();
$canvas = $dompdf->get_canvas();
$canvas->page_script('
if ($PAGE_NUM > 1) {
$font = Font_Metrics::get_font("helvetica", "bold");
$current_page = $PAGE_NUM-1;
$total_pages = $PAGE_COUNT-1;
$pdf->text(522, 770, "Page: $current_page of $total_pages", $font, 10, array(0,0,0));
}
');
答案 1 :(得分:0)
接受的答案对我不起作用。为什么不只检查页码而忽略第一页呢?像这样
$pdf->page_script ('
if ($PAGE_NUM != 1) {
$current_page = $PAGE_NUM;
$pdf->text(550, 750, "Page $current_page", null, 10, array(0,0,0));
}
');
答案 2 :(得分:0)
这与accepted answer相同,但是借助于带有静态函数的类,因此我们不必在字符串内部进行编码。
班级
<?php
namespace App\Services;
use Dompdf\Canvas;
use Dompdf\FontMetrics;
class PdfService
{
public static function outputPageNumbers(Canvas $pdf, FontMetrics $fontMetrics, $PAGE_NUM, $PAGE_COUNT) {
if ($PAGE_NUM > 1) {
$font = $fontMetrics->getFont("helvetica", "bold");
$current_page = $PAGE_NUM-1;
$total_pages = $PAGE_COUNT-1;
$pdf->text(522, 770, "Page: $current_page of $total_pages", $font, 10, array(0,0,0));
}
}
}
,然后使用page_script
$dompdf->render();
$canvas = $dompdf->getCanvas();
$canvas->page_script(
'\App\Services\ProductPdfsService::outputPageNumbers($pdf, $fontMetrics, $PAGE_NUM, $PAGE_COUNT);'
);