2014-06-24 34 views
0

你的工作方式? 好! 今天我正在使用html2pdf。它工作得很好,我可以顯示/保存pdf,但我不能同時做!這是一個問題,我不知道我該怎麼做。 我用用symfony庫和此代碼的工作:html2pdf:如何顯示pdf(允許用戶保存)並將其保存在服務器上

ob_start(); 
include(dirname(__FILE__).'/feuille.php'); 
$content = ob_get_clean(); 
$html2pdf = new \Html2Pdf_Html2Pdf('P','A4','fr'); 
$html2pdf->pdf->SetDisplayMode('real'); 
$html2pdf->WriteHTML($content); 

// $result = $html2pdf->Output($_POST["fournisseur"].".pdf", 'F'); //save on server 
$result = $html2pdf->Output($_POST["fournisseur"].".pdf"); //show the page on browser 
exit(); 

註釋代碼只能如果我評論下面一個... 所以,你有什麼辦法,讓這兩個線對一起工作?

謝謝你的幫助!如果我在最後添加exit()函數,它也會有效,所以如果有人知道它的一些事情,他可以說話! :)

回答

3

您可以使用下面的方法...

$結果= $ html2pdf- >輸出($ _ POST [ 「fournisseur」], 「PDF」。 'F');

header(「Content-type:application/pdf」);

echo file_get_contents($ _ POST [「fournisseur」]。「。pdf」);

+1

請注意,這是不適合非常大的文件...幾MB的將是好的 – Ashish

+0

好的感謝信息,我只會在1頁時使用它,所以它不應該是一個問題。 ^^ –

+0

'$ result'變量未被使用。 – Stephane

0

我以前使用類似的庫,tcpdf。

我只是將文件保存在服務器中,然後回顯瀏覽器的鏈接或用php重定向用戶。

0

如果您使用不帶參數的output函數,您將能夠看到PDF而不保存它。

您可以添加第二個功能$html2pdf->Output($_POST["fournisseur"].".pdf", 'F')以將PDF保存到磁盤上。

關於exit,它可能來自您的ob_start()調用。這個函數打開一個響應緩衝區,而不發送它。該html2pdf output功能不需要ob_start功能;)

+0

THX,它的工作原理有關ob_start()。 ^^ –

0

,或者你可以試試這個

$html2pdf = new HTML2PDF('P','A4','fr'); 
$html2pdf->WriteHTML($content); 
$html2pdf->Output('example.pdf'); 
+0

或使用wkhtml2pdf - 它正是你想要的 –

+0

https://github.com/wkhtmltopdf/wkhtmltopdf開放源碼 –

+0

或者你可以試試這個 $ html2pdf = new HTML2PDF('P','A4','fr' ); $ html2pdf-> WriteHTML($ content); $ html2pdf-> Output('example。PDF'); 只有在您想要顯示PDF但不能在同一時間保存的情況下,此功能纔有效。^^ –

0

在Symfony2中,我們使用這樣的代碼來顯示PDF使用

return new Response(file_get_contents($fileData['path']), 200, array('Content-Type' => 'application/pdf')); 

爲下載文件

$response = new Response(file_get_contents($path)); 
$response->setStatusCode(200); 
$response->headers->set('Content-Type', mime_content_type($path)); 
$response->headers->set(
    'Set-Cookie', 
    'fileDownload=true; path=/'); 
$response->headers->set(
    'Content-Disposition', 
    sprintf('attachment;filename="%s"', utf8_decode($name)) 
); 

$response->send(); 
相關問題