Python|reportlab实现pdf内容填充
近期因工作需要要进行某个承诺书的签署文件生成,需要在固定的PDF模板上填充上部门、姓名、日期信息。之前使用过福昕PDF编辑器,体验较为不错,但这次要生成的PDF数量有300份,手工逐个处理自然是不便的。在《Python|PyPDF2实现PDF自动拆分》中曾写过利用 PyPDF2 实现PDF文件的拆分,这次我们用python的reportlab库尝试下PDF的生成。
PDF is the global standard for electronic documents. It supports high-quality printing yet is totally portable across platforms, thanks to the freely available Acrobat Reader. Any application which previously generated hard copy reports or driving a printer can benefit from making PDF documents instead; these can be archived, emailed, placed on the web, or printed out the old-fashioned way. However, the PDF file format is a complex indexed binary format which is impossible to type directly. The PDF format specification is more than 600 pages long and PDF files must provide precise byte offsets – a single extra character placed anywhere in a valid PDF document can render it invalid. This makes it harder to generate than HTML.
PDF文件格式是一种复杂的索引二进制格式,不可能直接输入。 reportlab 的处理逻辑是生成一个画布,通过笛卡尔坐标系在位图上创建具有矢量格式的文件内容,之后根据加工后的页码创建一个PDF。
思路
准备好待签署的人员清单及PDF模板,分析PDF模板(待签署页码,签署区域),生成签署内容并合成签署页,合成完成PDF并输出。
源码如下
1 |
|
总结
reportlab 的体验感还是不错的,这种通过笛卡尔坐标合成的PDF可以很准确的使内容生成到自己想要的位置。后来大致翻阅了官方文库(reportlab pdf库)发现这个库在PDF合成上真的是神器,在文本(颜色、样式)、图像、段落、表格等方面支持性都比较高。
商业转载请联系作者获得授权,非商业转载请注明出处。
如果文章对你有帮助,欢迎点击上方按钮打赏作者