PHP - Читать динамически сгенерированный (и отраженный) HTML в строку? - PullRequest
3 голосов
/ 07 августа 2009

У меня есть файл, который извлекает некоторую информацию из базы данных и создает довольно простой динамический 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?

Ответы [ 6 ]

6 голосов
/ 08 августа 2009

Как насчет использования простого HTTP-запроса для получения файла HTML и его загрузки в объект $ dompdf:

   <?php
    //...
    $dompdf->load_html(file_get_contents("http://yoursite.net/report.php?id=1249642977"));
   //...
   ?>

Я не понимаю, зачем вам нужна буферизация вывода ..

5 голосов
/ 07 августа 2009

Две проблемы.

Во-первых, вы не можете вызывать страницу 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-> должен работать.

3 голосов
/ 25 марта 2011

BlackAura на правильном пути. File_get_contents, как предлагали другие, не будет передаваться по переменным GET (или 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'));

Надеюсь, это поможет.

* 1006 Кевин *

1 голос
/ 11 августа 2009

В конце концов я решил изменить страницу php, которая генерирует HTML, чтобы она стала функцией, возвращающей строку HTML. Это скорее обходной путь, чем решение.

Будущие гуглеры на этой странице должны знать, что DOMPDF позволяет запускать встроенный PHP на странице, используя:

<script type="text/php">
   //some PHP here
</script>
1 голос
/ 08 августа 2009

Просто используйте PHP file_get_contents как таковой:

$page_html = file_get_contents("page.php?id=number");

затем передайте $ page_html в dompdf.

Надеюсь, это поможет:)

0 голосов
/ 17 августа 2009

У BlackAura правильная идея. Вы добавляете сгенерированный PDF в выходной буфер, а затем удаляете все.

...