2013-01-17 60 views
3

我試圖在動作的輸出中使用Zend Framework應用程序中的mPDF生成.pdf文件。Adob​​e Reader無法打開在Zend Framework中使用mPDF創建的.pdf文件

這是我行動的代碼:

public function testAction() 
{  
     $this->_helper->viewRenderer->setNoRender(); 
     $this->_helper->layout->disableLayout(); 

     $this->view->foo = 'bar'; 

     $this->render(); 
     $output = $this->getResponse()->getBody(); 

     $layout = new Zend_Layout(); 
     $layout->content = $output;  
     $layout->setLayoutPath(dirname(dirname(__FILE__)) . '/views/layouts/'); 
     $layout->setViewSuffix('tpl'); 
     $layout->setLayout('pdf'); 

     $html = $layout->render(); 

     $mpdf = new mPDF('utf-8', 'A4'); 
     $mpdf->WriteHTML($html); 
     $mpdf->Output('report.pdf', 'D'); 
} 

如果要顯示的內容很長(即幾段),下載.pdf文件時,Adobe公司的閱讀器將引發以下錯誤:ADOBE READER無法打開'report.pdf',因爲它不是受支持的文件類型,或者是因爲文件已損壞(例如,它是作爲電子郵件附件發送的,未正確解碼)。但是,如果我將相同的輸出作爲靜態變量傳遞給mpdf,而不使用Zend Layout渲染,則.pdf文件將打開而不會出現任何錯誤。此外,只有在內容很長的情況下,Adobe Reader纔會拋出該問題(即只有幾個字時才起作用)。

我應該知道有什麼限制嗎?

+0

我有同樣的問題,但後來當我通過電子郵件發出該錯誤。我認爲問題出在pdf閱讀器上。 – botenvouwer

回答

0

不應該有在開始的空間,並在文件的末尾,以便檢查這些空間,

0

ADOBE READER比一些行吟詩人的PDF閱讀器那麼寬容,如果PDF文件已損壞。在文本編輯器打開PDF文檔,並檢查文件的東西,如開始: %PDF-1.4 %¢?ãAA「

有時PHP錯誤通知是在該文件的頂部找到。

來源:mpdf forum IanBack's answer

相關問題