使用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博客 ” ,链接:http://blog.itpub.net/69933200/viewspace-2652131/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69933200/viewspace-2652131/