2015-10-19 72 views
0

我有一個很大的項目在PHP 5.4中使用這個舊的庫,我試圖讓一個簡單的PHP頁面生成一個PDF。看看一個已知的,良好的工作PHP頁面我寫了這個測試頁面引用html2fpdf,它似乎是3.0版測試版。我相信這是最後一個版本。它仍然工作在生產,但這個簡單的PHP頁面返回此錯誤:html2fpdf錯誤:無法修改標題信息

Deprecated: Function set_magic_quotes_runtime() is deprecated in /media/psf/Home/apps/clean/fpdf.php on line 1805 

Deprecated: Function set_magic_quotes_runtime() is deprecated in /media/psf/Home/apps/clean/fpdf.php on line 1828 

Warning: Cannot modify header information - headers already sent by (output started at /media/psf/Home/apps/clean/fpdf.php:1805) in /media/psf/Home/apps/clean/fpdf.php on line 1678 
FPDF error: Some data has already been output to browser, can't send PDF file 

OK,閱讀有關堆棧set_magic_quotes告訴我升級這是不可能的,我可以看到該庫。看1805行,該函數已經設置爲false。

我確定它在生產中被忽略,但它顯然是停止我的pdf生成,因爲它試圖發送標題。我不明白爲什麼它會在圖書館。

以下測試運行在apache 2.4下php 5.4.33和5.6.8中,結果相同。

我沒有看到什麼?

<?php 
require_once($_SERVER['DOCUMENT_ROOT']. 'html2fpdf.php'); 
// header("Content-type:application/pdf"); 
ob_end_clean(); 
ob_start(); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<body>  
<form action="review_template2.php" method="post" name="MainForm"> 
<p>This is the review_template.tpl.php</p> 
</form>  
</body> 
</html>  
<?php 
$filename = 'saam.pdf'; 
$html=ob_get_contents();  
$pdf = new HTML2FPDF(); 
$pdf->AddPage(); 
$pdf->WriteHTML($html); 
ob_end_clean(); 
$pdf->Output($filename, "D"); 

設置php標題時會出現一個空白pdf,但是當我把它註釋掉時出現上述錯誤。 thx,sam

回答

0

您只需在<?php之後加error_reporting(0);即可。這將禁用顯示已棄用的錯誤消息,並允許您的腳本修改標題並顯示PDF。 但請注意,這將禁用所有錯誤報告,因此如果腳本中存在其他錯誤,則不會收到通知。 或者,您可以使用error_reporting(E_ERROR | E_WARNING | E_PARSE);僅顯示對腳本有影響的錯誤。 或參閱error_reporting()的文檔。