PHP - 将动态生成(和回显)的HTML读入字符串?

时间:2009-08-07 15:33:27

标签: php dompdf

我有一个文件从数据库中提取一些信息并创建一些相对简单的动态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();

我认为我可以使用某些东西来实现目标,但不出所料它不起作用。

那么,如果要直接将文件加载到用于DOMPDF类的字符串中,如何读取输出到浏览器的HTML?

6 个答案:

答案 0 :(得分:6)

如何使用简单的HTTP请求获取HTML文件,而不是将其加载到$ dompdf对象中:

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

我不明白你为什么需要输出缓冲......

答案 1 :(得分:5)

两个问题。

首先,您无法使用include_once调用类似的PHP页面 - 将忽略查询字符串。你必须以其他方式将id。提供给report.php。

其次,您正确缓冲输出。但是,您将当前输出缓冲区传递给DOMPDF,告诉它生成PDF到输出缓冲区,并丢弃输出缓冲区。你可能想要这样的东西:

$dompdf = new DOMPDF();
$dompdf->load_html(ob_get_clean());
$dompdf->render();
$dompdf->stream("sample.pdf", array('Attachment'=>'0'));

这将获得当前输出缓冲区,丢弃它并禁用输出缓冲。然后$ dompdf-&gt;流应该可以工作。

答案 2 :(得分:3)

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'));

希望有所帮助。

-Kevin

答案 3 :(得分:1)

只需使用PHP的file_get_contents

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

然后将$ page_html传递给dompdf。

希望这会有所帮助:)

答案 4 :(得分:1)

我最终决定改变生成HTML的php页面,使其成为返回HTML字符串的函数。这更像是一种解决方法,而不是一种解决方案。

此页面的未来Google员工应该知道DOMPDF允许您使用以下命令在页面上运行内联PHP:

<script type="text/php">
   //some PHP here
</script>

答案 5 :(得分:0)

BlackAura有正确的想法。您将生成的PDF附加到输出缓冲区,然后丢弃所有内容。