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

2024-05-15 11:48

本文主要是介绍非常不错!来教你用 Python 批量生成 PDF 文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是「进击的Coder」的第 495 篇技术分享

作者:Ckend

来源:Python 实用宝典

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

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

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

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

1fd2b7573f706df39daee51109909f95.png

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. 支持压缩

一个最简单的生成示例:

446d8a981067a257d83109a3160cb2b4.png

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

7c21394afdef15bd2f4460225d220ac7.png

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

e21f89759f34482b30ebb08582fb4459.png

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

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

2b7f650801a97b1406f1de939cc95c11.png

cell 还有2个参数:

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

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

09df544c5af6b526b080e1b4b39ed869.png

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

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

52ae72ad638ed2892e004a4607f9a100.png

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

da217af54cbf6b887ed1dc875b972156.png

真的是非常方便。

3.批量生成 PDF

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

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

b9f764e4ff5f041840377b9d99964835.png

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

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

85636268094e5e032569ea7da41ee895.png

最终效果如下:

e799dd47010549b6846759c01650a198.png

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

9a9e5df050a504c28cb7cb56fa1bafc8.png

End

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

53231f129d2e133846d7b5f33ecf0fbc.png

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

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

b2458ee0eaff957e9d96ffa07ce85d62.png

好文和朋友一起看~

这篇关于非常不错!来教你用 Python 批量生成 PDF 文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991750

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定