
本文档详细介绍了 dompdf 中 `$pdf` 变量的含义,以及如何使用 `page_text` 函数在 pdf 页面中添加文本。同时,也涵盖了如何在 php 代码和 html 嵌入的脚本中使用这些功能,并提供了启用 html 嵌入脚本的安全注意事项。通过本文,你将能够掌握在 dompdf 中进行页面定制和动态内容添加的方法。
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 代码。
以下是一个示例:
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 中使用
以下是一个示例:
在这个例子中,脚本检查 $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 文档。











