2014-10-31 64 views
1

我正在查找使用DomPDF爲某些網上商店產品創建PDF的過程。如何將數據發佈到其他文件並使用DomPDF進行渲染

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"); 
?> 

運行此腳本,它從流文件product_pdf.php一個新的PDF文檔並顯示內容之後。 在這個從數據庫中提取一些信息的文件中,我也迴應ID從$ postdata高於,但它不能顯示內部生成的PDF。 我試着用GET方法:

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

但它也行不通。 你有什麼想法嗎?

回答

1

你真的只是缺少一點點。當您使用file_get_contents()時,您已經通過本地文件系統將文件拉入。這意味着實際的PHP代碼不會被解析,而最終的代碼是源代碼的PDF。

要獲取生成的HTML,您必須通過完整的URL(例如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的工作原理有更好的理解之前)。

+1

噢,雖然這是最簡單的方法,但還有其他的方法可以做你想做的事。例如,您可以重寫product_pdf.php以使用緩衝,並在HTML生成結束時將緩衝區捕獲到變量並將其提供給dompdf。 – BrianS 2014-11-06 03:52:27

相關問題