如果在浏览器中打开,则会出现Zend_pdf错误

时间:2015-08-13 18:43:15

标签: zend-framework zend-pdf

我有一个有趣的问题。我试过Zend_Pdf。它以前工作得很好。 但是现在2天后它就不再起作用了。 开始我的操作后,我打开或保存浏览器问题。如果我选择打开,我会收到一个错误,上面写着“由于文件损坏而无法打开:

我从控件中删除了所有东西并尝试使用简单版本,但是我得到了同样的错误。这是我的控制器操作:

public function indexAction()
{
    $pdf = new Zend_Pdf();
    $pdf->properties['Title']='testtitle';
    //echo $pdf->properties['Title'] . "\n";
    $pdf->pages = array_reverse($pdf->pages);
    $style = new Zend_Pdf_Style();
    $style->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 36);
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
    $pdf->pages[1] = ($page = $pdf->newPage('A4'));
    $page=$pdf->pages[1];
    $page->setFont($font, 18);
    $page->drawText("testcaption", 100, 100);
    header("Content-Type: application/pdf");
    header("Content-Disposition: inline; filename=test.pdf");
    //header("Cache-Control: no-cache, must-revalidate");
    echo $pdf->render();
    // $fileName="./pdfs/test.pdf"; 
    // $pdf->save($fileName);   
}

我删除了所有内容,因为我认为我的代码最终不完全有效,但现在我只剩下测试了。我想说有一个firefox更新,所以我尝试使用IE,但同样的问题。也许有一个基本的错误? 另一个评论,在这种情况下我只使用控制器动作,我没有任何viewscript。我是否需要一个因为控制器构建pdf?如果是的话里面应该是什么? 有人知道答案或一些解决方法吗?

新的现象: 我将我的代码(最后的陈述)改为:

$fileName="./pdfs/test.pdf";    
$pdf->save($fileName);  
echo $pdf->render();

我在浏览器中收到相同的消息。现在我在我的网络服务器上有一个副本,如果我用doubleclick打开这个文件,它会打开而没有任何错误..

我尝试在浏览器中选择“保存在”下,并在我的网络服务器之外选择了一些文件夹。这个文件我无法打开,现在我完全糊涂了。

有人可以帮忙吗?

更新

我尝试了其他一些可能性。非常有趣的是,我有2个不同的pdf-dokuments。我在服务器上保存的(使用保存方法)打开正常,一切正常。如果我强迫另一个人在浏览器中下载并从我的下载文件夹中打开文档。

我得到的文件里面有我的html布局,还有pdf日期。 它真的开始如下:

<base href="/mosaik/public/" />

之后有我的div区域,最后有我的pdf区域。

这是同样的效果,但在尝试改变我的代码时,我构建了一个提供pdf的类,我有一个视图,我设置了标题:

<?php
$response = Zend_Controller_Front::getInstance()->getResponse();
//$response = new Zend_Controller_Response_Http();
 $response->setHeader('Content-Disposition', 'attachment; fileName=schwesternliste.pdf');
$response->setHeader('Content-type', 'application/pdf');

 $pdf=new Application_Model_Pdf_Schwestern();
 $pdf->load();
 $pdf->fillData();
echo $pdf->render();

?>

这必须是标题的内容,有人知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

由于这个事实,这个门户网站自appr以来一直在线。 5个月,并且工作得非常好,我尝试了另外一台我没有使用自动更新的计算机,并且它仍然有效。有趣!我尝试了一下,正如我上面写的那样,打开保存的pdf没有问题,如果我在浏览器中渲染它,我只会遇到这些错误。我将这两个文件与eclipse进行了比较,并得知导致错误的文件在标题中有我的html布局,另一个是明确的pdf。

因为我对3个不同的模块有相同的动作,我需要它才能工作,所以我做了一个解决方法,这肯定不是最好的解决方案,但我没有其他想法。

现在控制器操作将pdf保存在服务器上,我的视图会在其上放置一些标题并重新打开它。这很好用。这里的每个人对我的视图脚本都有相同的效果:

<?php
require_once 'Zend/Pdf.php';

header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename=schwesternliste.pdf');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
echo file_get_contents("./pdfs/schwesternliste.pdf");

?>
<html>
<body>
相关问题