アクションの出力から、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 は次のエラーをスローします。ファイルが破損しています (たとえば、電子メールの添付ファイルとして送信され、正しくデコードされませんでした)。
ただし、Zend Layout render を使用せずに、同じ出力を静的変数として mpdf に渡すと、.pdf ファイルがエラーなしで開きます。また、Adobe Reader は、コンテンツが長い場合にのみ問題をスローします (つまり、2、3 語しかない場合に機能します)。
知っておくべき制限はありますか?