服务器诊所:PDF自动生成专业质量输出

2009-05-13 01:07:28来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


对于几种类别的顶级质量的可显示输出来说,PDF是公认的标准。尽管大多数程序员把它看作“桌面”技术—内容专家通过“另存为”操作选择的一种格式,但是,通过服务器端PDF创建的自动化,您可以使文档管理处理更有效。本月,Cameron介绍用于PDF管理和编程的ReportLab库。

您知道PDF。当推销员想要一本看上去“井井有条”的小册子,或法律人员需要不应该更改的文档时,他们就以可移植文档格式(PDF)发布这些文档。PDF是由AdobeSystems定义的标准,用于以独立于平台和设备的方式生成和显示文档。PDF建立在Adobe的PostScript(PS)的空前成功之上,后者于1984年首次发布,用于提高通过常用硬件可实现的打印精密度。原则上,PDF有固定的外观,在不同的Web浏览器和不同的设备(包括打印机)之间保持不变;PDF文档的内容被“锁定”。

尽管上面的陈述严格来说没有一条是正确的,但它们基本上能应付大多数用途。而且,PDF通常很容易打印;只有纯文本文档更容易与任何特定的打印机兼容。

那与您有什么关系吗?作为系统或服务器端程序员,您可能仅仅把PDF看成另一种不透明的内容类型。您的桌面用户或文档专家偶尔会更新您服务器上的实例,而您就象提供任何其它文件一样提供这些文件。您会说,那就是您最大限度参与的工作。

程序化的PDF生成
但是,那种模型遗漏了几个处理PDF的有趣的服务器端可能性。当您使PDF的生成自动化时,您可以开始使用软件工程的所有技术:版本控制、抽象、专业质量的备份和回归测试等等。程序化的PDF生成意味着您能够以可管理的方式来定制可交付使用的文档。您的组织处理PDF的惯例可能是:让熟练掌握特定桌面字处理程序的某个人建立某种类似“邮件合并”的操作,使文档输出参数化。然而,自动化所完成的工作远不止这些。

桌面软件供应商对这一点有部分认识。有些字处理或桌面发布软件包具有脚本编制能力,这些能力至少在部分程度上涉及到PDF。有些制作室创建PostScript图像,并用Ghostscript或类似的软件包将它们转换成PDF。

但是,我喜爱的使PDF的生成自动化的方法,是使用三个被积极维护的开放源码库之一:ReportLab、PJ和PDFlib。它们都差不多,我已经有了使一些依靠各个库的项目取得极大成功的方法。下面的参考资料中有指向所有三个库以及几个其它工具的链接。

在这些工具中,ReportLab是我目前用得最多的工具:它可以处理我使用的几兆字节的PDF,它采用Python作为脚本语言,这很适合我,它的库包括我日常工作所需的所有功能,而且这个库背后的ReportLab公司看来享有持续增长的业务。此外,可以方便地将它集成到Python交互式shell中,这有利于形成一个令人愉快的高效开发环境。本月的“服务器诊所”的余下部分将举例说明如何开始对PDF编程。

PDF的“Hello,world”
尽管您可能已经在服务器上有了较好的Python安装,但Python.org的下载页面可以帮助您确定是否拥有最新版本。Version2.2.1是很好的选择。

安装了Python之后,在开始PDF编程工作以前,您需要访问ReportLab下载页面。即使在慢的连接上,下载并安装Python和ReportLabToolkit最多不会超过一小时(请参阅参考资料以获得这两个下载的链接)。

您的第一个应用程序的源代码可以象下面的代码那样简单:

“Hello,world”页的源代码
 fromreportlab.pdfgenimportcanvas
 fromreportlab.lib.unitsimportinch

 font="Helvetica"
 font_size=26
 text="Hello,world"
 x=5.0*inch
 y=8.0*inch
 destination_file="/tmp/first.pdf"

 my_canvas=canvas.Canvas(destination_file)
 my_canvas.setFont(font,font_size)
 my_canvas.drawRightString(x,y,text)

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:服务器诊所:并不是仅仅就是线程化而已

下一篇:用低代价的服务器过程将文档处理自动化