我有一个文件从数据库中提取一些信息并创建一些相对简单的动态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?
答案 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附加到输出缓冲区,然后丢弃所有内容。