PHP DOMPDF 的分页代码无法识别变量
PHP variable not recognized in pagination code of DOMPDF
我正在使用 DOMPDF 使用户能够将单个页面保存为 PDF。
这是一个双语网站 (German/English)。在生成页面的 body
标签的顶部,我使用了以下代码(大部分是从 dompdf 示例文件中复制的),其中包含一个 if/else 子句以在每个页面的顶部生成自动页码德语或英语:
<script type="text/php">
if ( isset($pdf) ) {
// v.0.7.0 and greater
$x = 36;
$y = 24;
if($lang == "de") {
$text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
} else {
$text = "page {PAGE_NUM} of {PAGE_COUNT}";
}
$font = $fontMetrics->get_font("helvetica", "regular");
$size = 6;
$color = array(0,0,0);
$word_space = 0.0; // default
$char_space = 0.0; // default
$angle = 0.0; // default
$pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
}
</script>
因此输出应该是 "Seite X von X" 或 "page X of X",具体取决于 $lang
的值。
在此之前,我根据用户的浏览器设置定义 $lang
变量,并使用类似 if/else 的子句作为 "de"(德语)或 "en"(英语,如果浏览器语言不是德语)并以此为条件来决定内容是以德语还是英语输出。
在代码的下方,这按预期工作(使用 PHP 条件)。只有上面代码中的自动分页似乎无法识别 $lang
变量 - 输出始终为英文。
但是被打印出来,说明PHP代码被解析了
我的问题是:为什么 $lang
变量 在那部分代码中没有被识别,我该怎么做才能让它工作?
感谢@Nick 和@proprit 的两条评论,我被引导到 scope 的问题 - 这就是导致问题的原因。我发现如果我在条件之前添加 global $lang;
,它就可以正常工作。所以代码必须是:
<script type="text/php">
if ( isset($pdf) ) {
// v.0.7.0 and greater
$x = 36;
$y = 24;
global $lang;/* this is the only thing I added */
if($lang == "de") {
$text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
} else {
$text = "page {PAGE_NUM} of {PAGE_COUNT}";
}
$font = $fontMetrics->get_font("helvetica", "regular");
$size = 6;
$color = array(0,0,0);
$word_space = 0.0; // default
$char_space = 0.0; // default
$angle = 0.0; // default
$pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
}
</script>
感谢您的帮助!
我正在使用 DOMPDF 使用户能够将单个页面保存为 PDF。
这是一个双语网站 (German/English)。在生成页面的 body
标签的顶部,我使用了以下代码(大部分是从 dompdf 示例文件中复制的),其中包含一个 if/else 子句以在每个页面的顶部生成自动页码德语或英语:
<script type="text/php">
if ( isset($pdf) ) {
// v.0.7.0 and greater
$x = 36;
$y = 24;
if($lang == "de") {
$text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
} else {
$text = "page {PAGE_NUM} of {PAGE_COUNT}";
}
$font = $fontMetrics->get_font("helvetica", "regular");
$size = 6;
$color = array(0,0,0);
$word_space = 0.0; // default
$char_space = 0.0; // default
$angle = 0.0; // default
$pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
}
</script>
因此输出应该是 "Seite X von X" 或 "page X of X",具体取决于 $lang
的值。
在此之前,我根据用户的浏览器设置定义 $lang
变量,并使用类似 if/else 的子句作为 "de"(德语)或 "en"(英语,如果浏览器语言不是德语)并以此为条件来决定内容是以德语还是英语输出。
在代码的下方,这按预期工作(使用 PHP 条件)。只有上面代码中的自动分页似乎无法识别 $lang
变量 - 输出始终为英文。
但是被打印出来,说明PHP代码被解析了
我的问题是:为什么 $lang
变量 在那部分代码中没有被识别,我该怎么做才能让它工作?
感谢@Nick 和@proprit 的两条评论,我被引导到 scope 的问题 - 这就是导致问题的原因。我发现如果我在条件之前添加 global $lang;
,它就可以正常工作。所以代码必须是:
<script type="text/php">
if ( isset($pdf) ) {
// v.0.7.0 and greater
$x = 36;
$y = 24;
global $lang;/* this is the only thing I added */
if($lang == "de") {
$text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
} else {
$text = "page {PAGE_NUM} of {PAGE_COUNT}";
}
$font = $fontMetrics->get_font("helvetica", "regular");
$size = 6;
$color = array(0,0,0);
$word_space = 0.0; // default
$char_space = 0.0; // default
$angle = 0.0; // default
$pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
}
</script>
感谢您的帮助!