Adobe Reader无法在Zend Framework中打开使用mPDF创建的.pdf文件

时间:2013-01-17 20:02:06

标签: zend-framework adobe adobe-reader mpdf zend-layout

我正在尝试从操作的输出中使用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 Reader会抛出以下错误:Adobe Reader无法打开“report.pdf”,因为它不是受支持的文件键入或因为文件已损坏(例如,它是作为电子邮件附件发送并且未正确解码)。

但是,如果我将相同的输出作为静态变量传递给mpdf,而不使用Zend Layout渲染,则打开.pdf文件时没有任何错误。此外,当且仅当内容很长时(例如,如果只有几个单词),Adobe Reader会引发问题。

我应该注意哪些限制?

2 个答案:

答案 0 :(得分:0)

文件的开头和结尾不应有空格,所以请检查这些空格,

答案 1 :(得分:0)

如果PDF文件损坏,Adobe Reader不如其他PDF阅读器宽容。在文本编辑器中打开PDF文档,检查文件是否以如下内容开头: %PDF-1.4 %A¢Ã£AA“

有时会在文件顶部找到PHP错误通知。

来源:mpdf forum IanBack's answer