我正在使用DOMPDF来使用户将单个页面另存为PDF。
这是一个双语网站(德语/英语)。在生成的页面的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”或“ X页面X”,具体取决于$lang
的值。
在此之前,我要根据用户的浏览器设置定义$lang
变量,并使用类似的if / else子句将其定义为“ de”(德语)或“ en”(英语,如果浏览器语言不是德语),并以此为条件来决定内容是以德语还是英语输出。
进一步在代码中按预期工作(使用PHP条件)。上面的代码中只有自动分页似乎无法识别$lang
变量-输出始终是英文。
但是 已打印,这表明PHP代码已被解析。
我的问题是:为什么在该部分代码中无法识别$lang
变量 ,我该怎么做才能使其起作用?
答案 0 :(得分:0)
由于@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>
感谢您的帮助!