4

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

4

6 回答 6

6

使用一个简单的 HTTP 请求来获取 HTML 文件然后将其加载到 $dompdf 对象中怎么样:

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

我不明白为什么在这里需要输出缓冲..

于 2009-08-08T00:21:30.143 回答
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->stream 应该可以工作。

于 2009-08-07T15:40:18.360 回答
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'));

希望有帮助。

-凯文

于 2011-03-24T22:03:54.937 回答
1

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

未来访问此页面的 Google 员工应该知道 DOMPDF 允许您在页面上运行内联 PHP,使用:

<script type="text/php">
   //some PHP here
</script>
于 2009-08-11T08:20:13.917 回答
1

只需file_get_contents像这样使用PHP:

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

然后将 $page_html 传递给 dompdf。

希望这可以帮助 :)

于 2009-08-08T00:39:49.347 回答
0

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

于 2009-08-17T14:53:35.487 回答