使用PHP生成打印良好的格式良好的PDF文档并非易事。 传统上,使用PHP生成PDF有两种主要方法。 如果有足够的时间和耐心,两者都可以完成工作,但仍然有很多不足之处:
HTML-to-PDF: 这种方法广泛用于主流应用程序。 这里使用众多开源库之一以编程方式创建HTML文档并将其转换为PDF。 但是,由于HTML不是面向页面的格式(如PDF),因此无法在HTML和PDF之间执行1对1映射。 典型的文字处理文件格式功能,例如页眉和页脚,孤儿和寡妇甚至页码都不能用HTML表示。
程序化: 此方法可以完全控制生成的PDF。 但是,它要求从程序代码中设置每行文本的x和y坐标,每个几何形状和图形。 这不仅是一个非常耗时的解决方案,而且非常脆弱:每当图形设计师更改文档的布局时,程序员必须重新编写他或她的程序代码。
在本文中,作者提出了一种全新的第三种方法。 它依赖于在WYSIWYG环境中创建的模板,例如Microsoft®Word或Open Office,然后使用PHP填充数据。 生成的文档不仅可以保存为PDF,还可以保存为DOCX,DOC和RTF。
在我们深入研究这种新方法的内部工作方式之前,让我们先来看一个实际的例子。 以下PHP 5代码说明了PDF生成,其中模板 template.docx [46.7 KB]中 的合并字段软件,被许可方和公司 用PHP中的标量数据填充。 生成的文档 document.pdf [104.7 KB]已创建并写入磁盘。
$ phpLiveDocx = new Zend_Service_LiveDocx_MailMerge ( array ( 'username' => 'yourUsername' , 'password' => 'yourPassword' ) ); $ phpLiveDocx - > setLocalTemplate ( 'template.docx' ); $ phpLiveDocx - > assign ( 'software' , 'Magic Graphical Compression Suite v1.9' ); $ phpLiveDocx - > assign ( 'licensee' , 'Henry Smith' ); $ phpLiveDocx - >
'公司' , 'Megasoft合作' ); $ phpLiveDocx - > createDocument (); $ document = $ phpLiveDocx - > retrieveDocument ( 'pdf' ); file_put_contents ( 'document.pdf' , $ document ); unset ( $ phpLiveDocx );
本文中演示的代码将随 Zend Framework 1.10一起 提供。 虽然在撰写本文时,没有正式发布日期,但预计将于2009年第四季度发布1.10。同时,您可以检查 标准孵化器 SVN存储库中 的组件 。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69933200/viewspace-2652131/ ,如需转载,请注明出处,否则将追究法律责任。