Я использую 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», либо «page X of X», в зависимости от значения $lang
,
До этого я определяю $lang
переменная в зависимости от настроек браузера пользователя с похожим условием if / else как «de» (немецкий) или «en» (английский, если язык браузера НЕ немецкий) и использует это как условие для определения, выводится ли содержимое на немецком или английском.
Далее в коде это работает как задумано (используя условия PHP). Только автоматическое разбиение на страницы в приведенном выше коде, похоже, не распознает $lang
переменная — вывод всегда на английском языке.
Но это является напечатан, который показывает, что код PHP анализируется.
Мой вопрос: почему $lang
переменная не узнал в этой части кода, и что я мог сделать, чтобы это работало?
Благодаря двум комментариям @Nick и @proprit меня привели к проблеме объем — вот что вызвало проблему. Я узнал, что если я добавлю 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>
Спасибо за помощь!
Других решений пока нет …