我正在尝试在 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 才会抛出这个问题。
我应该注意什么限制?