我正在寻找使用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');
但它也无效。 你知道吗?
答案 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如何工作有更好的理解之前)。