У меня есть файл, который извлекает некоторую информацию из базы данных и создает некоторый относительно простой динамический HTML.
Затем файл может быть использован DOMPDF, чтобы превратить его в документ PDF. DOMDPF использует переменные GET для достижения базовой реализации.
ob_start(); include_once("report.php?id=1249642977"); require_once("dompdf/dompdf_config.inc.php"); $dompdf = new DOMPDF(); $dompdf->load_html(ob_get_contents()); $dompdf->render(); $dompdf->stream("sample.pdf", array('Attachment'=>'0')); ob_end_clean();
Я думал, что смогу использовать что-то подобное, чтобы достичь цели, но неудивительно, что это не сработало.
Итак, как я могу прочитать HTML-код, который выводится в браузер, если вы должны загрузить файл напрямую, в строку для использования с классом DOMPDF?
Две проблемы.
Во-первых, вы не можете вызывать страницу PHP таким образом, используя include_once – строка запроса будет проигнорирована. Вы должны дать id report.php другим способом.
Во-вторых, вы правильно буферизируете вывод. Тем не менее, вы передаете текущий выходной буфер в DOMPDF, сообщая ему, чтобы сгенерировать PDF в выходной буфер и отбрасывать выходной буфер. Вы, вероятно, хотите что-то вроде:
$dompdf = new DOMPDF(); $dompdf->load_html(ob_get_clean()); $dompdf->render(); $dompdf->stream("sample.pdf", array('Attachment'=>'0'));
Это получит текущий выходной буфер, отбросит его и отключит буферизацию вывода. Затем должен работать поток $ dompdf->.
Как насчет использования простого HTTP-запроса для получения файла HTML и загрузки его в объект $ dompdf:
<?php //... $dompdf->load_html(file_get_contents("http://yoursite.net/report.php?id=1249642977")); //... ?>
Я не понимаю, зачем вам нужна буферизация вывода здесь.
BlackAura находится на правильном пути. File_get_contents, как предложили другие, не будут проходить через GET vars (или POST). Но вы можете использовать cURL для этого. Код ниже должен работать:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://YOURFULLURL.COM/report.php?id=1249642977'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $my_html = curl_exec($ch); curl_close($ch); $dompdf = new DOMPDF(); $dompdf->load_html($my_html); $dompdf->render(); $dompdf->stream("sample.pdf", array('Attachment'=>'0'));
Надеюсь, это поможет.
Кевин
Просто используйте PHP file_get_contents
как таковой:
$page_html = file_get_contents("page.php?id=number");
затем передайте $ page_html в dompdf.
Надеюсь это поможет 🙂
В конечном итоге я решил изменить страницу php, которая создает HTML, чтобы она стала функцией, возвращающей строку HTML. Это скорее обходное решение, чем решение.
Future Googlers на этой странице должны знать, что DOMPDF позволяет запускать встроенный PHP на странице, используя:
<script type="text/php"> //some PHP here </script>
BlackAura имеет правильную идею. Вы добавляете сгенерированный PDF в выходной буфер, а затем отбрасываете все.