2009-08-07 49 views
3

我有一個文件從數據庫中提取一些信息並創建一些相對簡單的動態HTML。PHP - 將動態生成(並回顯)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(); 

我想我可能會使用一些ilke來實現目標,但毫不奇怪,它沒有工作。

那麼,如果要將文件直接加載到DOMPDF類使用的字符串中,我該如何讀取輸出到瀏覽器的HTML?

回答

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->流應該工作。

6

有關使用一個簡單的HTTP請求來獲取HTML文件,並比在$ DOMPDF對象加載它是什麼:

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

我不明白爲什麼你所需要的輸出緩衝..

1

只需使用PHP的file_get_contents這樣:

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

再通$ page_html到DOMPDF。

希望這有助於:)

+0

的file_get_contents不正是覺得─它獲得的文件,而不是,如果在瀏覽器中運行該文件會產生動態生成HTML的內容。 – bcmcfc 2009-08-08 18:00:00

1

我最終決定改變產生的HTML,使之成爲返回一個HTML字符串的函數PHP頁面。這比解決方案更適合解決問題。

未來的Google這一頁應該知道DOMPDF允許你使用一個網頁上運行PHP在線:

<script type="text/php"> 
    //some PHP here 
</script> 
0

BlackAura有正確的想法。您將生成的PDF附加到輸出緩衝區,然後丟棄所有內容。

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

相關問題