Как получить номер страницы на dompdf PDF при использовании "view"

Итак, я использую следующий фрагмент, чтобы получить «представления» HTML с переменными PHP, загружаемыми как $data чтобы я мог делать такие вещи, как заполнение tr данных из вызова базы данных или что-то еще.

 function getView ($file, $data=NULL) { if (!empty($data)) extract($data); ob_start(); if (is_file($file)) include($file); return ob_get_clean(); } 

Получается для чего-то вроде $htmlPDF = getView('receipt.php', array( 'orderNumber' => $orderNumber )); Где $orderNumber затем используется в HTML для заполнения соответствующих мест. Например, например:

 <h1>You Order #<?= $orderNumber; ?></h1> 


Хорошо, так что дело в том, что я получаю свой HTML. Затем я загружаю его в мою переменную dompdf как:

 $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); 

Что все отлично работает. Проблема заключается в том, чтобы заставить inline php скрипт работать, чтобы получить номера PAge Numbers / Page Headers | Footers. Я следовал самым лучшим направлениям, но я не могу сделать правильный выбор. До сих пор не было никаких ошибок, кроме того, что я получаю 0 номеров страниц в любом месте!

И да, я просмотрел страницы, такие как Header в PDF-странице, используя DOMPDF в PHP и номер страницы dompdf , но все равно не продвинулся вперед! Мне интересно, имеет ли inline php скриптинг то, как я получаю HTML как строку? Любые указатели, идеи, советы?

Related of "Как получить номер страницы на dompdf PDF при использовании "view""

Обновление Относительно изменений с версией dompdf > = 0.7.0
1. Поскольку файл dompdf_config.inc.php был удален из этой версии (и больше не ссылается), все параметры dompdf должны быть установлены во время выполнения.
4. Теперь класс FontMetrics создается вместо статического. Чтобы упростить перенос встроенных скриптов из более ранних версий dompdf, мы предоставляем доступ к экземпляру класса FontMetrics через переменную $ fontMetrics. Обновите встроенные скрипты. Например, FontMetrics :: get_font ('helvetica') теперь будет $ fontMetrics-> getFont ('helvetica').
~ Спасибо за ответ Дениса Амелинга за обновленную информацию.

Нашел мой ответ, просмотрев файл dompdf_config.inc.php . Как оказалось, DOMPDF_ENABLE_PHP имеет значение false результате чего игнорируется встроенный PHP-скрипт. Я просто редактировал dompdf_config.custom.inc.php следующим образом, и все прекрасно и работает с более поздним кодом в view .

В dompdf / dompdf_config.custom.inc.php

 <?php define("DOMPDF_ENABLE_PHP", true); 

Во время работы

 $dompdf->set_option("isPhpEnabled", true); 

Затем в моем html-файле

 <body> <script type="text/php"> if ( isset($pdf) ) { // OLD // $font = Font_Metrics::get_font("helvetica", "bold"); // $pdf->page_text(72, 18, "{PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(255,0,0)); // v.0.7.0 and greater $x = 72; $y = 18; $text = "{PAGE_NUM} of {PAGE_COUNT}"; $font = $fontMetrics->get_font("helvetica", "bold"); $size = 6; $color = array(255,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> <div 

Если вы пройдете этот маршрут, не забудьте перезапустить Apache

Если вы используете DOMPDF> = 0.7.0, файл dompdf_config.inc.php был удален, а добавление номера страницы теперь требует немного другого подхода:

Поскольку файл dompdf_config.inc.php был удален из этой версии (и больше не ссылается), все параметры dompdf должны быть установлены во время выполнения.

Чтобы включить PHP-код для выполнения DOMPDF, используйте:

 $dompdf->set_option("isPhpEnabled", true); 

Кроме того, теперь FontMetrics вызывается с помощью $fontMetrics вместо Font_Metrics , поэтому код, указанный @ user1231342435346354, слегка изменяется:

 <script type="text/php"> if ( isset($pdf) ) { $pdf->page_script(' if ($PAGE_COUNT > 1) { $font = $fontMetrics->get_font("Arial, Helvetica, sans-serif", "normal"); $size = 12; $pageText = "Page " . $PAGE_NUM . " of " . $PAGE_COUNT; $y = 15; $x = 520; $pdf->text($x, $y, $pageText, $font, $size); } '); } </script> 

Сначала вы должны разрешить выполнение встроенных php-скриптов в файле dompdf_config.inc.php . (change define("DOMPDF_ENABLE_PHP", true); эта строка соответствует true)

Этот код устанавливает индикатор страницы в правом углу заголовка …

  <script type="text/php"> if ( isset($pdf) ) { $pdf->page_script(' if ($PAGE_COUNT > 1) { $font = Font_Metrics::get_font("Arial, Helvetica, sans-serif", "normal"); $size = 12; $pageText = Page . " " . $PAGE_NUM . " of " . $PAGE_COUNT; $y = 15; $x = 520; $pdf->text($x, $y, $pageText, $font, $size); } '); } </script> 

Убедитесь, что тег скрипта находится в теге body … иначе он не работает!