如何使用DomPDF将数据发布到另一个文件并从中呈现

时间:2014-10-31 08:51:47

标签: php file-get-contents dompdf

我正在寻找使用DomPDF为某些在线商店产品创建PDF的程序。

PHP脚本:

<?php
require_once("../../dompdf_config.inc.php");
$postdata = http_build_query(
    array(
        'id' => 150
    )
);
$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context  = stream_context_create($opts);
$html = file_get_contents('product_pdf.php', false, $context);
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");
?>

运行此脚本后,它会流式传输新的PDF文档并显示product_pdf.php文件中的内容。 在这个从数据库中提取一些信息的文件中,我也从上方的$ postdata回显 id ,但它无法在生成的PDF中显示。 我尝试过使用GET方法:

$html = file_get_contents('product_pdf.php?id=150');

但它也无效。 你知道吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下你应该使用cURL。

答案 1 :(得分:1)

你真的只是错过了一点点。当您使用file_get_contents()时,PHP会通过本地文件系统提取文件。这意味着实际的PHP代码不会被解析,你最终得到的是源代码的PDF。

要获取生成的HTML,您必须通过完整的网址(例如http://example.com/product_pdf.php?id=150)提取文档。这样做是通过您的Web服务器获取文档,该服务器将按照任何请求提供生成的HTML。

只要PHP设置allow_url_fopen为真(并且现在需要让dompdf对远程资源执行任何操作),那么您可以执行以下操作:

<?php
require_once("../../dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html_file('http://example.com/product_pdf.php');
$dompdf->render();
$dompdf->stream("sample.pdf");
?>

我建议使用$dompdf->load_html_file()而不是将文档提取到变量中。这将提供最可预测的结果(至少在你对dompdf如何工作有更好的理解之前)。