Не удается получить Zend PDF-шоу в браузере - PullRequest
1 голос
/ 19 июля 2010

У меня странная проблема с Zend PDF, я просто не могу показать PDF, чтобы показать в моем действии у меня есть этот код:

$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();

$pdf = new Zend_Pdf('path/to/file.pdf');

$this->getResponse()->setHeader('Content-type', 'application/x-pdf', true);
$this->getResponse()->setHeader('Content-disposition', 'inline; filename=filetrace.pdf', true);
$this->getResponse()->setBody($pdf->render());

Zend создает эту трассировку стека:

#0 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Pdf.php(303): Zend_Pdf_Parser->__construct('http://example...', Object(Zend_Pdf_ElementFactory_Proxy), false)
#1 E:\wwwroot\test\htdocs\application\modules\dashboard\controllers\FileController.php(171): Zend_Pdf->__construct('http://example...')
#2 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action.php(513): Dashboard_FileController->showAction()
#3 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('showAction')
#4 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#6 E:\SRVApps\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#7 E:\wwwroot\test\htdocs\public\index.php(26): Zend_Application->run()
#8 {main}

При создании нового pdf проблем не возникает

У кого-нибудь есть идея?

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 ноября 2013

Я понимаю, что это старый вопрос, но я нашел ответ на него методом проб и ошибок. Вот как выглядит мое действие, чтобы в браузере отображался только PDF-файл. Это работает в Chrome. Я не проверял его ни в каком другом браузере.

    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout()->disableLayout();
    $this->getResponse()
        ->setHeader('Content-Disposition', 'inline; filename=foo.pdf')
        ->setHeader('Content-type', 'application/pdf');
    $pdf = Zend_Pdf::load('/path/to/my.pdf');
    echo $pdf->render();
1 голос
/ 21 июля 2010

Метод 1: Получить двоичную строку за пределами Zend_Pdf

$file = file_get_contents('path/to/file.pdf')
$pdf = new Zend_Pdf($file);

Метод 2: Установить параметр $load true

$pdf = new Zend_Pdf('path/to/file.pdf', null, true);

Метод 3: Использовать статический load -метод

$pdf = Zend_Pdf::load('path/to/file.pdf');
...