社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

非常不错!来教你用 Python 批量生成 PDF 文档

进击的Coder • 5 年前 • 694 次点击  
这是「进击的Coder」的第 495 篇技术分享
作者:Ckend
来源:Python 实用宝典

“

阅读本文大概需要 4 分钟。


”


日常办公中,经常会使用 PDF 文档,难免需要对 PDF 文档进行编辑,有时候 PDF 文档中的大部分内容都是一样的,只是发送对象不同。

这种模板套用的场景下,使用 Python 进行自动化就尤为方便,用最短的时间办最高效的事。

今天就给大家讲讲如何用 Python 自动套用模板批量生成下方这样的 PDF 文档。

1.准备



开始之前,你要确保 Python 和 pip 已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细 Python 安装指南 进行安装。如果你用 Python 的目的是数据分析,可以直接安装 Anaconda:Python 数据分析与挖掘好帮手 —Anaconda

Windows 环境下打开 Cmd(开始—运行 —CMD),苹果系统环境下请打开 Terminal(command+ 空格输入 Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用 VSCode 编辑器,把本文代码 Copy 下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档— VSCode 详细指南。

在终端输入以下命令安装我们所需要的依赖模块:

pip install fpdf


看到 Successfully installed xxx 则说明安装成功。

本文完整源代码可在【Python实用宝典】公众号后台回复:批量生成pdf 下载。

2.基本使用



PyPDF 是从 PHP 移植到 Python 的第三方模块。其主要特点有:

1. 非常容易使用和扩展
2. 提供了许多简单示例
3. 没有外部依赖项
4. 不需要安装变异其他库 (DLL)

它的基本功能有:

1. 调整 PDF 精度、页面格式、边距
2. 管理页眉、页脚
3. 自动分页符、自动换行和文本对齐
4. 支持图像、颜色、超链接文本
5. 支持压缩

一个最简单的生成示例:


生成的效果如下,由于 PDF 空白处太多,这里只截字体部分:

把生成的文本变复杂一点:


注意 cell 的参数:
1. border 取值为 0 或 1,代表是否显示边框。
2. ln 是指在生成该文本框之后焦点移动到的位置,0 代表到该文本框的右边,1 代表换行,2 代表文本框的正下方。
3. align 是指文本对齐格式,C 为居中、L 为左对齐、R 为右对齐。

因此上述代码会生成类似这样的 PDF 文档:


cell 还有2个参数:

1. fill 参数用于设置文本框的背景,TRUE 时为白色,False 为透明。
2. link 参数用于添加超链接

下面看一个比较复杂的例子,带图片 LOGO 作为页眉,带页数作为页脚的 PDF 文档:

看看要怎么实现这个 PDF 文档的生成。

首先需要继承 FPDF 类,以用于自定义页眉和页脚。


这样设置完页眉也页脚后,只要你使用该类定义 PDF 文档,便会自动带上页眉页脚。


真的是非常方便。


3.批量生成 PDF



接下来在 Python 实用宝典网站(https://pythondict.com)上随机抽取了 5 位注册了账号的同学的 ID 批量制作祝福 PDF 文档。

这里可以复用咱刚自定义完成的页眉和页尾。不过,为了显示中文,需要在继承的类里面添加并设置字体为本地中文字体,如:


注意,add_font 第一个参数是该字体注册进 FPDF 的名字,之后 set_font 的时候都使用该名字。

然后将用户名都放到一个数组里,遍历该数组,填充用户名,循环批量生成 PDF.


最终效果如下:

完整源代码可在公众号后台回复:批量生成pdf 下载

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。


看完记得关注@进击的Coder
及时收看更多好文
↓↓↓


崔庆才的「进击的Coder」知识星球已正式成立,感兴趣的可以查看《我创办了一个知识星球》了解更多内容,欢迎您的加入:



好文和朋友一起看~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121761