Я ищу процедуру для создания 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');
но это тоже не работает.
У тебя есть идеи?
Вы действительно только немного скучаете. Когда вы используете 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).
Вы должны использовать CURL в этом случае.