我有一个在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();
}
答案 0 :(得分:2)
Zend_Pdf_Image :: imageWithPath需要一个有效的文件并使用is_file函数调用来检查文件是否存在。
首先,使用图像的绝对路径,而不是使用相对路径。您可以通过引用APPLICATION_PATH指定绝对路径。例如,
APPLICATION_PATH . '/../public/data
如果您的代码中尚未定义APPLICATION_PATH,请将此代码粘贴到您的public / index.php中
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
然后,检查'data /'.$ GET ['id']。'/ crop '。$ _ GET ['id']。'。jpg'存在。另外,检查文件是否具有PHP访问的适当权限。
注意:使用Zend request object代替$ _GET。
答案 1 :(得分:0)
使用绝对路径:
$imagePath = '/kalendarz/data/'.$_GET['id'].'/crop_'.$_GET['id'].'.jpg';
或:
$imagePath = APPLICATION_PATH.'/../data/'.$_GET['id'].'/crop_'.$_GET['id'].'.jpg';
您可能还想对$_GET['id']
进行一些验证。