You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dompdf中$pdf变量是什么,如何使用page_text函数添加页面文本

问题解答


1. 内嵌脚本中$pdf变量的含义

内嵌<script type="text/php">里的$pdf就是Dompdf渲染阶段暴露的Canvas实例,和你在控制器中调用$dompdf->get_canvas()拿到的是同一个对象,所有Canvas支持的操作方法都可以在这个脚本里直接调用。
另外两个全局常量PAGE_NUM、PAGE_COUNT是Dompdf内置变量,渲染每一页时会自动赋值:PAGE_NUM是当前渲染页的页码(从1开始计数),PAGE_COUNT是PDF总页数。

2. page_text函数使用方法

page_text是Canvas类提供的便捷方法,专门用于给PDF页面添加文本内容,参数顺序如下:

  • 第1位:x轴坐标,单位为磅(72磅=1英寸)
  • 第2位:y轴坐标,注意PDF坐标原点为页面左下角
  • 第3位:待显示的文本内容,支持直接写入{PAGE_NUM}、{PAGE_COUNT}占位符,会被自动替换为对应数值
  • 第4位:字体资源,通过Font_Metrics::get_font获取
  • 第5位:字体大小,单位为磅
  • 第6位:RGB颜色数组,三个值取值区间为0-1,比如array(1,0,0)对应红色

注意:page_text不支持解析HTML标签,你原有代码里写的<div>会被直接作为普通文本输出,自定义样式只能通过字体、字号、颜色参数设置。

正确的内嵌脚本示例:

<script type="text/php">
if (isset($pdf)) {
    $font = Font_Metrics::get_font("helvetica", "bold");
    // 仅在第2页添加页眉
    if (PAGE_NUM === 2) {
        $pdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0));
    }
}
</script>

3. 更优的PHP端实现方案

你当前控制器中手动遍历底层页面对象的写法兼容性较差,推荐在$dompdf->render()渲染完成后统一操作页面内容,逻辑更清晰:

<?php
$html = view('pdf')->render();
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
// 先执行渲染,生成所有页面
$dompdf->render();

$canvas = $dompdf->getCanvas();
$font = $dompdf->getFontMetrics()->getFont("helvetica", "bold");
$totalPages = $canvas->getPageCount();

// 遍历所有页码,从1开始计数
for ($pageNum = 1; $pageNum <= $totalPages; $pageNum++) {
    // 切换到目标页码
    $canvas->set_page($pageNum);
    // 跳过第一页,给其他页添加页眉
    if ($pageNum != 1) {
        $canvas->text(72, 18, "Header: {$pageNum} of {$totalPages}", $font, 6, array(0,0,0));
    }
    // 给指定页(比如第3页)添加自定义内容
    if ($pageNum == 3) {
        // A4页面高度约842磅,y值设为820对应页面底部位置
        $canvas->text(72, 820, "仅第3页显示的自定义内容", $font, 10, array(1,0,0));
    }
}

$dompdf->stream("dompdf_out.pdf", ["Attachment" => false]);
exit(0);
?>

该方案优势:

  • 不需要操作底层CPDF对象和页面ID,Dompdf封装的set_page()、getPageCount()方法兼容性更好
  • 页码逻辑直观,不会出现页面ID和实际页码对应错误的问题
  • 所有控制逻辑都在PHP端实现,不需要在HTML中嵌入PHP脚本,维护性更高

内容的提问来源于stack exchange,提问作者May'Habit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:05