17 октября 2011 г.

Отдача .PDF с помощью Zend

Бывает результатом работы action-а зенда является отдача файла.
По хорошему, файлы надо отдавать напрямую сервером, но бывает файл генерится автоматически да ещё отталкиваясь от прав. В этом случае от зенда уже не отмазаться =))


В данном примере мы откуда либо получили содержимое файла в base64, слепили из него pdf-ку и отдали юзеру как файл (тоесть нормальные браузеры должны предложить юзеру скачать или сохранить файл с именем test.pdf).

Copy Source | Copy HTML
  1. $this->_helper->layout->disableLayout();

  2. $this->_helper->viewRenderer->setNoRender();

  3. $file = base64_decode($CONTENT); // вы откуда то взяли контент закодированный в base64

  4.  

  5. $this->getResponse()

  6.       ->setHttpResponseCode(200)

  7.       ->setHeader('Pragma', 'public', true)

  8.       ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)

  9.       ->setHeader('Content-Type', 'application/x-pdf', true)

  10.       ->setHeader('Content-Length', strlen($file), true)

  11.       ->setHeader('Content-Disposition', "attachment; filename=test.pdf", true)

  12.       ->setBody($file);


Комментариев нет: