Как я могу опубликовать данные в другой файл и визуализировать из него, используя DomPDF

Я ищу процедуру для создания PDF для некоторых продуктов интернет-магазина, используя DomPDF.

PHP скрипт:

<?php
require_once("../../dompdf_config.inc.php");
$postdata = http_build_query(
array(
'id' => 150
)
);
$opts = array('http' =>
array(
'method'  => 'POST',
'header'  => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context  = stream_context_create($opts);
$html = file_get_contents('product_pdf.php', false, $context);
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");
?>

После запуска этого скрипта он передает новый PDF-документ и показывает содержимое из файла product_pdf.php.
В этом файле, который извлекает некоторую информацию из базы данных, я также повторил Я бы от $ postdata выше но он не может отображаться внутри сгенерированного PDF.
Я пытался с помощью метода GET:

$html = file_get_contents('product_pdf.php?id=150');

но это тоже не работает.
У тебя есть идеи?

1

Решение

Вы действительно только немного скучаете. Когда вы используете file_get_contents() поскольку у вас есть PHP вытягивает файл через локальную файловую систему. Это означает, что реальный код PHP не анализируется, и в результате вы получаете PDF исходного кода.

Чтобы получить сгенерированный HTML-код, вы должны получить документ через полный URL-адрес (например, http://example.com/product_pdf.php?id=150). Это приводит к извлечению документа через ваш веб-сервер, который доставит сгенерированный HTML, как это делается для любого запроса.

Пока настройка PHP allow_url_fopen Значение true (и сейчас это необходимо для того, чтобы dompdf мог что-либо делать с удаленными ресурсами), тогда вы можете просто сделать следующее:

<?php
require_once("../../dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html_file('http://example.com/product_pdf.php');
$dompdf->render();
$dompdf->stream("sample.pdf");
?>

Я рекомендую использовать $dompdf->load_html_file() вместо извлечения документа в переменную. Это даст наиболее предсказуемые результаты (по крайней мере, до тех пор, пока вы не поймете, как работает dompdf).

1

Другие решения

Вы должны использовать CURL в этом случае.

1