热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zendpdf实例例子

ZendFrameworkPDF最重要的部分也是最常用的类就是Zend_Pdf_Page类了.这个类的用法比较灵活.具体的来看看这个小家伙.首先介绍一下这个类定义一个很

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. /** 
  2.  * PDF 空文档尺寸测试脚本 
  3.  *  
  4.  * @author: Guya 
  5.  * @email: camworkster@gmail.com 
  6.  */ 
  7.  
  8. //生成一个PDF文档对象 
  9. $pdf = new Zend_Pdf(); 
  10.  
  11. //文件保存路径和名称 
  12. $saveUri = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pagesTest.pdf'
  13.  
  14. //测试第一种用法: 建立两个空白A4页(一个竖向的和一个横向的), 并且加入到PDF文档中. 
  15. $pageA4V = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); 
  16. $pageA4H = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4_LANDSCAPE); 
  17. $pdf->pages[] = $pageA4V
  18. $pdf->pages[] = $pageA4H
  19.  
  20. //建立两个空白信纸页(一个竖向的和一个横向的), 并且加入到PDF文档中. 
  21. $pageLetterV = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER); 
  22. $pageLetterH = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE); 
  23. $pdf->pages[] = $pageLetterV
  24. $pdf->pages[] = $pageLetterH
  25.  
  26. //测试第二种用法: 建立一个空白自定义尺寸页,  
  27. //设定宽 300, 高为 500, 数值小点方便查看. 并且加入到PDF文档中. 
  28. $pageCustomSize = new Zend_Pdf_Page(300, 500); 
  29. $pdf->pages[] = $pageCustomSize
  30.  
  31. //测试第三种用法: 建立一个空白页, 规格使用模板, 并且加入到PDF文档中. 
  32. //这里使用自定以的页面做模板, 方便比较查看.  
  33. $pageUseTpl = new Zend_Pdf_Page($pageCustomSize); 
  34. $pdf->pages[] = $pageUseTpl
  35.  
  36. //一系列的空白页建立完了. 保存文件, 然后打开看看 
  37. $pdf->save($saveUri); 
    放上生成的页面截图效果, 为了方便比较, 我把文件缩小到10%, 方便比较查看.
    OK, 后续继续分享这个 Zend_Pdf_Page里有意思的方法, 我们要在这些空白文档里加入中文汉字, 加入图片, 加入... 加入你想加入的东西. O(∩_∩)O哈哈~

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
author-avatar
作祟椰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有