zend pdf 实例 例子

Zend Framework PDF 最重要的部分也是最常用的类就是 Zend_Pdf_Page 类了. 这个类的用法比较灵活. 具体的来看看这个小家伙.

    首先介绍一下这个类定义一个很有常用的参数, 也就是页面规格. 常规的, 它提供了2种类型的尺寸, 一种是我们打印机常用的A4纸张尺寸. 宽:595 高:842, 是个常变量, 叫: Zend_Pdf_Page::SIZE_A4 这个是默认的也就是竖向的, 有时候我们会在WORD等软件里把页面打印时设置为横向的. 这个只是把宽和高互换了一下. 看你自己喜欢那种风格的排版了. 横向的尺寸变量名叫: Zend_Pdf_Page::SIZE_A4_LANDSCAPE, 此外还提供了另外一个常用的页面尺寸. 就是信纸规格的. 宽是:612 高是: 792, 变量名叫: Zend_Pdf_Page::SIZE_LETTER, 当然这个也是竖向的. 也可以使用横向的. 变量名是: Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE.
    Zend_Pdf_Page 还定义了其他的页面常数. 方便使用. 其他的先不深入, 一个一个玩过来. 当建立好一个PDF对象了后, 最重要的就在这个文档中放入一页文档, 不然这个PDF文件被PDF阅读器打开是会报错的. Zend_Pdf_Page 的构造器提供了非常强悍灵活的功能. 新建立一个页面对象时: new Zend_Pdf_Page($param1, $param2 = null, $param3 = null); 这3个参数非常的灵活.
    第一种用法: 最简单的. 就是建立一个新文档. 什么也没有. 就只建立一个新文档. 只要告诉 Zend_Pdf_Page 这个文档的尺寸即可.
        比如建立一个空白页,竖向的, 尺寸是常见的A4大小.
        $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
        如果使用 SIZE_A4_LANDSCAPE 就可以建立一个横向的A4空白页
        $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4_LANDSCAPE);
        或者是信纸大小的页面,
        $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER);
        $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE);
        可以看到, 我们只用了 Zend_Pdf_Page 构造器参数的第一个参数, 如果我们要自己定义一个尺寸的文档怎么办呢? 这样就用到 Zend_Pdf_Page 构造器的第二种方法.
    第二种用法: 自定义PDF文档的宽度和高度.
        如果要自定义PDF文档中的一页的宽度和高度的话, 可以给 Zend_Pdf_Page 构造器传入 2 个参数, 第一个是宽度值, 第二个是高度值. 其实就是这样 :
        $page = new Zend_Pdf_Page($widthValue, $heightValue);
    第三种用法: 克隆已有的页面模型.
        比如已经建立了一个页面:
        $tplPage = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
        然后文档后门可能有很多页, 每页指定的信息是比较繁琐的. 如果以后模板要修改成其他尺寸的也不好办. 所有这个时候建立一个模板页就很有用了. 模板页建立后, 新建其他页时只要传入这个模板页对象就可以了. 所有新建的页面都和模板页面的通用信息一样的. 比如新建2个页面:
        $page1 = new Zend_Pdf_Page($tplPage);
        $page2 = new Zend_Pdf_Page($tplPage);
    第四中用法: Zend_Pdf_Page的构造器在1.6.1版本时是提供了4类建立页面对象的方法, 后来版本就不知道会不会增加了. 我们看看现在这个构造器的最后一种用法.
        在建立一个PDF文档时候, ZF提供了2种方法, 一种是load()方法, 一种是parse()方法, parse模式建立的PDF文档中, 其中文档里的页面可以提供给新的页面做模板, 类似刚才说的第三种用法, 只是模板页不是新生成的. 而是从已有的PDF文档中的一页提取出来的. 当然你要指定parse到的PDF文档的第几页做模板. 语法大概是这样:
        $pdf = Zend_Pdf::parse($pdfString);
        $page = new Zend_Pdf_Page($pdf, 2); //用第二页做模板.
    注: 第四种用法只是看了 Zend_Pdf 代码包的源代码得出的结论. 因为这种模式我认为不会常用. 没具体的测试过这种模式. 如果有出入, 请通知我. 谢谢!
    现在我们可以来建立一系列的空白文档来测试一下刚才所说的. 第4种方法不测试, 比较麻烦. 也不常用. 代码如下:
  1. <?php 
  2. /** 
  3.  * PDF 空文档尺寸测试脚本 
  4.  *  
  5.  * @author: Guya 
  6.  * @email: camworkster@gmail.com 
  7.  */ 
  8.  
  9. //生成一个PDF文档对象 
  10. $pdf = new Zend_Pdf(); 
  11.  
  12. //文件保存路径和名称 
  13. $saveUri = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pagesTest.pdf'
  14.  
  15. //测试第一种用法: 建立两个空白A4页(一个竖向的和一个横向的), 并且加入到PDF文档中. 
  16. $pageA4V = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); 
  17. $pageA4H = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4_LANDSCAPE); 
  18. $pdf->pages[] = $pageA4V
  19. $pdf->pages[] = $pageA4H
  20.  
  21. //建立两个空白信纸页(一个竖向的和一个横向的), 并且加入到PDF文档中. 
  22. $pageLetterV = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER); 
  23. $pageLetterH = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE); 
  24. $pdf->pages[] = $pageLetterV
  25. $pdf->pages[] = $pageLetterH
  26.  
  27. //测试第二种用法: 建立一个空白自定义尺寸页,  
  28. //设定宽 300, 高为 500, 数值小点方便查看. 并且加入到PDF文档中. 
  29. $pageCustomSize = new Zend_Pdf_Page(300, 500); 
  30. $pdf->pages[] = $pageCustomSize
  31.  
  32. //测试第三种用法: 建立一个空白页, 规格使用模板, 并且加入到PDF文档中. 
  33. //这里使用自定以的页面做模板, 方便比较查看.  
  34. $pageUseTpl = new Zend_Pdf_Page($pageCustomSize); 
  35. $pdf->pages[] = $pageUseTpl
  36.  
  37. //一系列的空白页建立完了. 保存文件, 然后打开看看 
  38. $pdf->save($saveUri); 
    放上生成的页面截图效果, 为了方便比较, 我把文件缩小到10%, 方便比较查看.
Zend_Pdf页面测试效果.jpg
    OK, 后续继续分享这个 Zend_Pdf_Page里有意思的方法, 我们要在这些空白文档里加入中文汉字, 加入图片, 加入... 加入你想加入的东西. O(∩_∩)O哈哈~
posted @ 2010-11-17 22:22  春哥也编程  阅读(814)  评论(0编辑  收藏  举报