首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在浏览器中显示Zend pdf

无法在浏览器中显示Zend pdf
EN

Stack Overflow用户
提问于 2010-07-20 03:10:17
回答 3查看 5.5K关注 0票数 1

我对zend pdf有一个奇怪的问题,我只是不能让pdf在我的操作中显示我有这个代码:

代码语言:javascript
复制
$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创建了这个堆栈跟踪:

代码语言:javascript
复制
#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文件时没有问题

有谁有主意吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-11-23 05:10:06

我意识到这是一个古老的问题,但我通过反复试验找到了答案。这就是我让pdf显示在浏览器中的动作。这在Chrome中是有效的。我没有在任何其他浏览器中测试过它。

代码语言:javascript
复制
    $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();
票数 2
EN

Stack Overflow用户

发布于 2010-07-21 14:21:28

方法1:从Zend_Pdf外部获取二进制字符串

代码语言:javascript
复制
$file = file_get_contents('path/to/file.pdf')
$pdf = new Zend_Pdf($file);

方法二:设置$load参数true

代码语言:javascript
复制
$pdf = new Zend_Pdf('path/to/file.pdf', null, true);

方法3:使用静态load-method

代码语言:javascript
复制
$pdf = Zend_Pdf::load('path/to/file.pdf');
票数 1
EN

Stack Overflow用户

发布于 2020-07-29 14:08:49

在Magento1.9中,它使用Zend_Pdf在浏览器中渲染PDF,以下内容对我有效:

代码语言:javascript
复制
// In controller action
$filename = 'foo.pdf';
$pdf = Zend_Pdf::load('path/to/foo.pdf');
$content = $pdf->render();
$contentLength = strlen($content);

$this->getResponse()
    ->setHttpResponseCode(200)
    ->setHeader('Pragma', 'public', true)
    ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
    ->setHeader('Content-type', 'application/pdf', true)
    ->setHeader('Content-Length', $contentLength, true)
    ->setHeader('Content-Disposition', 'inline; filename="'.$filename.'"', true)
    ->setHeader('Content-Transfer-Encoding', 'binary', true)
    ->setHeader('Accept-Ranges', 'bytes', true)
    ->setBody($content);
// Exit controller action
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3284182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档