Adobe Reader не может открыть файл.pdf, созданный с помощью mPDF в Zend Framework
Я пытаюсь сгенерировать файл.pdf, используя mPDF в приложении Zend Framework, из результатов действия.
Вот код моего действия:
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 render, файл.pdf открывается без каких-либо ошибок. Кроме того, Adobe Reader выдает проблему, если и только если содержание длинное (т.е. работает, если есть только пара слов).
Есть ли предел, о котором я должен знать?
2 ответа
Adobe Reader менее простителен, чем некоторые другие программы чтения PDF, если файл PDF поврежден. Откройте документ PDF в текстовом редакторе и убедитесь, что файл начинается с чего-то вроде: %PDF-1.4 %Ã “Ã £ ÃÃ"
Иногда уведомления об ошибках PHP находятся в верхней части файла.
Источник: mpdf форум, ответ IanBack
В начале и в конце файла не должно быть места, поэтому проверьте это место,