pdf 生成在框架 Zend 中不起作用



我有一个在Zend中生成PDF的脚本。我将脚本从将图像转换为pdf复制到服务器上的另一个目录。我现在收到错误:

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cannot create image resource. 
File not found.' in /kalendarz/Zend/Pdf/Resource/ImageFactory.php:38 
 Stack trace: 
 #0 /kalendarz/Zend/Pdf/Image.php(124): Zend_Pdf_Resource_ImageFactory::factory('data/0116b4/cro...') 
 #1 /kalendarz/cms.php(56): Zend_Pdf_Image::imageWithPath('data/0116b4/cro...') 
 #2 {main} thrown in /kalendarz/Zend/Pdf/Resource/ImageFactory.php on line 38

网站代码,示例图像链接(http://tinyurl.com/8srbfza):

else if($_GET['action']=='generate') {
    //1 punkt typograficzny postscriptowy (cyfrowy) = 1/72 cala = 0,3528 mm
    function mm_to_pt($size_mm) {
      return $size_mm/0.3528;
    }
    require_once("Zend/Pdf.php");
    $pdf = new Zend_Pdf(); 
    $page_w = mm_to_pt(100);
    $page_h = mm_to_pt(90);
    $page = $pdf->newPage($page_w.':'.$page_h.':'); 
    $pdf->pages[] = $page; 
    $imagePath= 'data/'.$_GET['id'].'/crop_'.$_GET['id'].'.jpg'; //to nie jest miniaturka
    $image = Zend_Pdf_Image::imageWithPath($imagePath);

    $left = mm_to_pt(0);
    $right = mm_to_pt(100);
    $top = mm_to_pt(90);
    $bottom = mm_to_pt(0);
    $page->drawImage($image, $left, $bottom, $right, $top);     
    $pdfData = $pdf->render(); 
    header("Content-Disposition: inline; filename=".$_GET['id'].".pdf"); 
    header("Content-type: application/x-pdf"); 
    echo $pdfData; 
    die();
  }

Zend_Pdf_Image::imageWithPath 需要一个有效的文件,并使用is_file函数调用来检查文件是否存在。

首先,使用

图像的绝对路径,而不是使用相对路径。您可以通过引用APPLICATION_PATH来指定绝对路径。例如

  APPLICATION_PATH . '/../public/data

如果代码中尚未定义APPLICATION_PATH,请将此代码粘贴到公共/索引中.php

 defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

然后,检查是否"data/'.$GET['id']"。/crop'.$_GET['id'].'.JPG'存在。另外,检查该文件是否具有 PHP 访问的适当权限。

注意:使用 Zend 请求对象而不是 $_GET。

使用绝对路径:

$imagePath = '/kalendarz/data/'.$_GET['id'].'/crop_'.$_GET['id'].'.jpg';

或:

$imagePath = APPLICATION_PATH.'/../data/'.$_GET['id'].'/crop_'.$_GET['id'].'.jpg';

您可能还想对 $_GET['id'] 进行一些验证。

最新更新