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

21 篇文章 0 订阅
12 篇文章 0 订阅
<?php
define("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实在越来越大,很无聊的很...

<?php
define("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

  • 大小: 349.8 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值