Dompdf 中 $pdf 的含义及 page_text 函数的使用详解

聖光之護
发布: 2025-10-18 12:14:01
原创
947人浏览过

 Dompdf 中 $pdf 的含义及 page_text 函数的使用详解

zuojiankuohaophpcnp>本文档详细介绍了 Dompdf 中 `$pdf` 变量的含义,以及如何使用 `page_text` 函数在 PDF 页面中添加文本。同时,也涵盖了如何在 PHP 代码和 HTML 嵌入的脚本中使用这些功能,并提供了启用 HTML 嵌入脚本的安全注意事项。通过本文,你将能够掌握在 Dompdf 中进行页面定制和动态内容添加的方法。</p> Dompdf 是一个流行的 PHP 库,用于将 HTML 转换为 PDF 文档。在 Dompdf 中,`$pdf` 变量和 `page_text` 函数是实现页面定制和动态内容添加的关键。理解它们的作用和用法,对于生成高质量的 PDF 文档至关重要。 ### 理解 `$pdf` 变量 `$pdf` 变量是一个在 Dompdf 的页面脚本中可用的特殊变量。它实际上是一个指向 Canvas 对象的引用。Canvas 对象提供了对底层 PDF 写入器的直接访问,允许你直接操作 PDF 文档的各个方面。 需要注意的是,Canvas 对象不能直接渲染 HTML。因此,你不能像在 HTML 中那样使用 CSS 样式或 HTML 标签来格式化文本。所有样式都需要手动指定。 ### 使用 `page_text` 函数添加文本 `page_text` 函数是 Canvas 对象的一个方法,用于在 PDF 页面的特定位置添加文本。其基本语法如下: ```php $pdf->page_text(float $x, float $y, string $text, Font $font, float $size, array $color);

参数说明:

  • $x: 文本的 X 坐标(从页面左下角开始)。
  • $y: 文本的 Y 坐标(从页面左下角开始)。
  • $text: 要添加的文本字符串。
  • $font: 使用的字体对象。
  • $size: 字体大小。
  • $color: 文本颜色,一个包含 RGB 值的数组(例如,array(0, 0, 0) 表示黑色)。

在 PHP 代码中使用 page_script

要在 PHP 代码中添加页面文本,可以使用 page_script 函数。这个函数允许你在每个页面渲染后执行一段 PHP 代码。

以下是一个示例:

<?php

use Dompdf\Dompdf;
use Dompdf\FontMetrics;

$html = view('pdf')->render();
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();

$canvas = $dompdf->getCanvas();
$fontMetrics = $dompdf->getFontMetrics(); // 获取 FontMetrics 对象

$canvas->page_script('
  if ($PAGE_NUM !== 1) {
    $font = $fontMetrics->get_font("helvetica", "bold");
    $pdf->page_text(72, 18, "Header: $PAGE_NUM of $PAGE_COUNT", $font, 6, array(0,0,0));
  }
');

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

?>
登录后复制

在这个例子中,page_script 函数在每个页面上执行一段 PHP 代码,检查当前页码 ($PAGE_NUM) 是否为 1。如果不是,它会在页面顶部添加一个包含页码信息的页眉。

注意: 需要注意的是,需要通过 $fontMetrics = $dompdf->getFontMetrics(); 获取 FontMetrics 对象,以便在 page_script 中使用。

在 HTML 中使用嵌入式脚本

你也可以在 HTML 文档中嵌入 PHP 脚本来添加页面文本。要使用此功能,首先需要启用 HTML 嵌入式脚本:

$dompdf = new Dompdf(['isPhpEnabled' => true]);
登录后复制

启用后,你可以在 HTML 中使用 <script type="text/php"> 标签来嵌入 PHP 代码。

SpeakingPass-打造你的专属雅思口语语料
SpeakingPass-打造你的专属雅思口语语料

使用chatGPT帮你快速备考雅思口语,提升分数

SpeakingPass-打造你的专属雅思口语语料 25
查看详情 SpeakingPass-打造你的专属雅思口语语料

以下是一个示例:

<script type="text/php">
  if ( isset($pdf) ) {
    $font = Font_Metrics::get_font("helvetica", "bold");
    if (PAGE_NUM===2) $pdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}",
                    $font, 6, array(0,0,0));
  }
</script>
登录后复制

在这个例子中,脚本检查 $pdf 变量是否已设置(以确保脚本在 Dompdf 环境中运行),然后检查当前页码是否为 2。如果是,它会在页面顶部添加一个包含页码信息的页眉。

安全提示: 启用 HTML 嵌入式脚本会带来安全风险,因为它允许在 HTML 文档中执行任意 PHP 代码。只有在你知道你在做什么,并且信任 HTML 内容的来源时,才应启用此功能。

page_script 和 page_text 的重要性

page_script 和 page_text 函数是在 HTML 渲染完成后执行的,这使得它们非常适合添加页眉、页脚和页码等内容。由于 Dompdf 在渲染文档后才能确定总页数 ($PAGE_COUNT),因此你必须使用 page_text 或 page_script 才能在 PDF 中正确显示总页数。

总结

通过本文,你学习了如何在 Dompdf 中使用 $pdf 变量和 page_text 函数来定制 PDF 页面。你还学习了如何在 PHP 代码和 HTML 嵌入式脚本中使用这些功能,以及启用 HTML 嵌入式脚本的安全注意事项。掌握这些技术将使你能够创建更复杂和动态的 PDF 文档。

登录后复制

以上就是Dompdf 中 $pdf 的含义及 page_text 函数的使用详解的详细内容,更多请关注php中文网其它相关文章!

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号