[置顶] ZendFramework1.0 PDF开发中-Nesting level too deep的解决

来源:互联网 发布:人工智能能否代替老师 编辑:程序博客网 时间:2024/06/01 08:01
<?phpdefine("PHPVERSION",5) ; //PHP版本 -- 避免兼容性的问题define('L',dirname(__FILE__) ) ;//将当前路径加到PHP的全局路径中去$sep   =   WINDOWS ? ';'   :   ':';  ini_set("include_path","./ZendLib{$sep}".ini_get('include_path')); ini_set("include_path","./{$sep}".ini_get('include_path'));   require('Zend.php');Zend::dump($_REQUEST);Zend::loadClass('Zend_Pdf');$pdf = new Zend_Pdf();$pdf->save("chomp.pdf");?>

 

报出嵌套太深的错误,很郁闷啊,在家里不能上网没法找,现在找到.

修正: Zend\Pdf\ElementFactory.php文件中 267行如下所示

public function markAsModified(Zend_Pdf_Element_Object $obj)    {        if ($obj->getFactory() !== $this) { //!= to !==            throw new Zend_Pdf_Exception('Object is not generated by this factory');        }        $this->_modifiedObjects[$obj->getObjNum()] = $obj;    }

 

将 != 改为 !==

对对象的比较,应该用严格的比较符来比

== 换成 ===

!=  换成 !==

等等...

例如:

写道
false == 0 ; // true
false === 0 ; //false

 

 

参见: http://www.bigroom.co.uk/blog/php-nesting-level-too-deep-recursive-dependency

 

 

 

在这里说下PDF的创建,一般的工具在图片的效果上给人很不好的感觉,而ZF PDF创建很简单,效果也不错,这里就给出一个实例,和ZF 1.0的代码,以后说不定用得着,大家..

 

为什么选择ZF1.0 因为ZF1.8实在越来越大,很无聊的很...

<?phpdefine("PHPVERSION",5) ; //PHP版本 -- 避免兼容性的问题define('L',dirname(__FILE__) ) ;//将当前路径加到PHP的全局路径中去$sep   =   WINDOWS ? ';'   :   ':';  ini_set("include_path","./ZendLib{$sep}".ini_get('include_path')); ini_set("include_path","./{$sep}".ini_get('include_path'));   require('Zend.php');Zend::dump($_REQUEST);Zend::loadClass('Zend_Pdf');$fileName = './chomp.pdf' ;if(file_exists($fileName)){    $pdf = Zend_Pdf::load($fileName);}else {    $pdf = new Zend_Pdf();}/* $page = new Zend_Pdf_Page(Zend_Pdf_Const::PAGESIZE_LETTER);$pageHeight = $page->getHeight();$pageWidth = $page->getWidth();echo 'Height = '.$pageHeight.'<BR/>';echo 'Width = '.$pageWidth.'<BR/>';$pdf->pages[0] = ($page); *///$page = new Zend_Pdf_Page(Zend_Pdf_Const::PAGESIZE_LETTER_LANDSCAPE);$page = new Zend_Pdf_Page('1070:842:');$chompImage = new Zend_Pdf_Image_JPEG(L . '/ext-fck.jpg');$pageHeight = $page->getHeight();$pageWidth = $page->getWidth();$imageHeight = 437;$imageWidth = 1070;$topPos = $pageHeight - 36;$leftPos = 36;$bottomPos = $topPos - $imageHeight;$rightPos = $leftPos + $imageWidth;$page->drawImage($chompImage, $leftPos, $bottomPos, $rightPos, $topPos);$pdf->pages[0] = ($page);$pdf->save($fileName);?>

 

 

具体的代码在附件中,另外说句,这个压缩包中的上述错误已经修复... 这里给出一个图例,咱们也可以提供电子书生成的功能了,呵呵.... 感觉这个比JAVA的IText生成PDF还简单,就是还没有测试过延迟处理的问题...

 

 

 

另一个压缩文件来自于这里:

http://bbs.phpres.com/viewthread.php?tid=5412&extra=page%3D1&authorid=0&page=1

  • zfprj.rar (483.4 KB)
  • 下载次数: 5
  • 大小: 349.8 KB
  • os-php-zend5.source.zip (18.4 KB)
  • 下载次数: 4
  • 查看图片附件
0 0
原创粉丝点击