zoukankan      html  css  js  c++  java
  • 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哈哈~
  • 相关阅读:
    zoj1654二分图
    zoj1314无源汇有上下界最大流
    zoj2788最小割
    zoj2587唯一最小割
    poj1815最小割
    Loader之一:基本原理
    Fragment之三:根据屏幕尺寸加载不同的Fragment
    Fragment之一:Fragment入门
    Github android客户端源代码分析之一:环境搭建
    如何在Eclipse中查看Android API源码以及support包源码
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1880251.html
Copyright © 2011-2022 走看看