Итак, я использую следующий фрагмент, чтобы получить «представления» 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>
$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 как строку? Любые указатели, идеи, советы?
Обновление Относительно изменений с версией
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
.
<?php define("DOMPDF_ENABLE_PHP", true);
$dompdf->set_option("isPhpEnabled", true);
<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 … иначе он не работает!