2012-01-08 43 views
0

我嘗試將動態php數據庫文件轉換爲pdf。 我嘗試使用DOMPDF,但是我在定義字符串時遇到了問題。我將解釋:如何將動態php文件轉換爲pdf?

這裏是一個DOMPDF「世界你好」腳本:

require_once("dompdf_config.inc.php"); 
$html = 
    '<html><body>'. 
    '<p>Hello World!</p>'. 
    '</body></html>'; 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("hello_world.pdf"); 

的事情是,而不是簡單的

'<html><body>'. 
'<p>Hello World!</p>'. 
'</body></html>' 

我有很長的PHP文件滿函數和sql查詢。因爲它我有它的許多」,「,;等跡象裏面,我也有一個JavaScript動態圖(jqplot)在這個頁面。

PDF文件我得到的錯誤錯誤錯誤所以不是...

有沒有人有一個解決方案?

我將非常感謝所有的答案,將是一個解決方案真的很感謝......

+0

只是爲了確認你的問題,你試圖創建代碼本身的PDF出於某種原因,或** **輸出的代碼? – jcmeloni 2012-01-08 21:43:09

+0

輸出:-)。有任何想法嗎? – AnnaVas 2012-01-10 13:01:17

+0

Paker的答案應該可行... – jcmeloni 2012-01-10 13:16:42

回答

2

您可以使用ob_start和​​運行PHP代碼並捕獲輸出作爲字符串。

儘管對於JavaScript圖表來說,你倒黴。 DOMPDF非常聰明,但並不那麼聰明。您需要使用非JavaScript圖表解決方案,不使用圖表或使用Web瀏覽器來生成PDF。

+0

首先,感謝您的幫助!
我嘗試了你的建議,希望我能很好地理解它... 我是這樣做的: '<?php require_once(「dompdf_config.inc.php」);
ob_start();
?>
我的html + php blabla bla ...
$ html = ob_get_contents();
$ dompdf = new DOMPDF();
$ dompdf-> load_html($ html);
$ dompdf-> render();
$ dompdf-> stream(「hello_world.pdf」);
>」
但現在最高審計機關:
‘無法流PDF:頭已經發送’。
:-( – AnnaVas 2012-01-09 16:22:35

4

首先,您需要從PHP生成HTML,然後將它傳遞到DOMPDF:

<?php 
    require_once("dompdf_config.inc.php"); 
    ob_start(); 
    require_once("path/to/input/file.php"); 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html(ob_get_clean()); 
    $dompdf->render(); 
    $dompdf->stream("file.pdf"); 
?> 

你也可以做一個普通的HTTP請求:

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

如果您需要JavaScript支持,請嘗試wkhtmltopdf,它基於Webkit並且完美地工作。

+0

謝謝,我試了一下(常規HTTP請求),但我得到一個錯誤,賽斯:致命錯誤:調用非對象的成員函數load_html_file() – AnnaVas 2012-01-10 12:59:08

+1

在@Paker的第二個示例中,在第一行和第二行代碼之間添加$ dompdf = new DOMPDF(); – jcmeloni 2012-01-10 13:20:28

+0

謝謝@jcmeloni,答案已修復。 – Paker 2012-01-11 20:15:38

0

我不確定爲什麼需要首先生成HTML來構建PDF,但是正如其他人所建議的那樣,構建您的PHP腳本,然後使用類似FPDFTCPDF的東西。

它們都構建PDF文件並且可以接受HTML輸入。

0

嘗試......

<?php 
    ob_start(); 

    require_once("dompdf_config.inc.php"); 

    $file = file_get_contents('http://example.com/file.php'); 

    $dompdf = new DOMPDF(); 
    $dompdf->load_html($file); 
    $dompdf->render(); 
    $dompdf->stream("filename.pdf"); 
?>