【提升效率神器】Python简单批量生成PDF文档(详细做法)

news2024/11/16 17:52:29

文章目录

  • 前言
  • 一、准备
  • 二、基本使用
  • 三、批量生成PDF
  • 总结


前言

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

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

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


在这里插入图片描述

一、准备

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

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

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

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

pip install fpdf

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

二、基本使用

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文档,便会自动带上页眉页脚。

在这里插入图片描述
真的是非常方便。

三、批量生成PDF

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

这里可以复用咱刚自定义完成的页眉和页尾。不过,为了显示中文,需要在继承的类里面添加并设置字体为本地中文字体,如:
在这里插入图片描述
注意,add_font第一个参数是该字体注册进FPDF的名字,之后set_font的时候都使用该名字。

然后将用户名都放到一个数组里,遍历该数组,填充用户名,循环批量生成PDF.
在这里插入图片描述
最终效果如下:
在这里插入图片描述

总结

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注徐浪大讲堂!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BI 知识大全,值得收藏的干货

01、什么是商业智能BI? 商业智能BI可以实现业务流程和业务数据的规范化、流程化、标准化,打通ERP、OA、CRM等不同业务信息系统,整合归纳企业数据,利用数据可视化满足企业不同人群对数据查询、分析和探索的需求,从而为…

OpenCV实例(三)答题卡识别

OpenCV实例(三)答题卡识别1.答题卡识别概述2.单道题目的识别2.1基本流程及原理2.2代码实例:作者:Xiou 1.答题卡识别概述 随着信息化的发展,计算机阅卷已经成为一种常规操作。在大型考试中,客观题基本不再…

重整网站。。。。。。。。。

重整网站 写好回复的人 “ xxxxxxxx”通知栏,并且快速跳转到需要的页面。个人页面,记录自己发送的消息与回复的信息。以css 上传的图片防止被拉伸拉坏。 下拉的选择下拉的分页的好处。 评论功能的那一栏中的一个小的评论,如果手机端的话&a…

RabbitMQ 保证消息不丢失的几种手段

文章目录1.RabbitMQ消息丢失的三种情况2.RabbitMQ消息丢失解决方案2.1 针对生产者2.1.1 方案1 :开启RabbitMQ事务2.1.2 方案2:使用confirm机制2.2 Exchange路由到队列失败2.3 RabbitMq自身问题导致的消息丢失问题解决方案2.3.1 消息持久化2.3.2 设置集群…

无废话硬核分享:Linux 基础知识点总结很详细,全的很,吐血奉献

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触 Linux 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。 Linux 基础 操作系统 操作系统Operating System简称OS,是软件的一部分&#x…

【0基础学爬虫】爬虫基础之数据存储

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…

物联网时代的网络安全

近年来,物联网 (IoT) 彻底改变了我们的生活和工作方式。从智能家居到自动驾驶汽车,物联网设备在我们的日常生活中变得越来越普遍。 根据 Statista 的一份报告,到 2025 年将有超过 750 亿个物联网 (IoT) 设备投入使用。 然而,这…

c++之STl容器-string

目录 容器的分类 string string的概念 string的初始化 string的遍历 string的一些基本操作 char*类型和string类型互转 字符串的连接 字符串的查找和替换 string的截断和删除 容器的分类 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算…

SpringMVC03-文件上传、异常处理、拦截器

SpringMVC03 SpringMVC的文件上传 一 、文件上传的前端必要前提 form 表单的 entcype取值必须是:multipart/form-data。默认值:application/x-www-form-urlencoded,是表单请求正文的类型method 属性取值必须是 post提供一个文件选择域 二…

利用ChatGPT,一分钟制作思维导图

大家好,我是易安! 今天我来教你如何使用ChatGPT,一分钟制作出一份思维导图 大纲选题 想到一个课题,然后人工梳理出内容大纲,是个挺费精力的事情。但利用ChatGPT来做这件事. 5秒就可以搞定啦! 例如&#xf…

Python安全攻防之第二章Python语言基础

2.3 Python模块的安装与使用python模块的安装pip3 install 模块名称py -3 -m pip install 模块名称python模块的导入与使用(1)Import模块名称采用“Import模块名称”方式时,需要在对象前面加上模块名称作为前缀,具体形式为“模块名…

Nextcloud去掉URL中的index.php以及强制https(Win10子系统WSL)

一、Nextcloud去掉URL中的index.php 1、启用相关模块 cd /var/www/nextcloud #进入程序目录sudo chmod -R 777 .htaccess #设置.htaccess文件权限可读写sudo a2enmod envaudo a2enmod rewrite #启用rewrite模块2、修改nextcloud配置文件 vim /var/www/nextcloud/config/…

Redis数据备份与恢复

Redis数据备份与恢复 文章目录Redis数据备份与恢复1. Redis备份的方式2. RDB持久化2.1 什么是RDB?2.2 Fork操作2.3 save VS bgsave2.4 关于RDB备份的一些配置项2.5 RDB的备份与恢复2.6 RDB的自动触发2.7 RDB的优势与劣势3. AOF持久化3.1 什么是AOF?3.2 A…

hypothesis testing假设检验

假设检验是什么 比如一家巧克力工厂生产的巧克力每个1g,一个工人说,机器在维修之后生产的巧克力不是1g,为了验证工人说的是否正确,需进行假设检验。 随机挑选50个巧克力,计算平均重量。 H0:每个巧克力1g H…

Seatunnel-2.3.0源码解析

一、概述 SeaTunnel是一个简单易用的数据集成框架,在企业中,由于开发时间或开发部门不通用,往往有多个异构的、运行在不同的软硬件平台上的信息系统同时运行。数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中&#x…

Spring学习笔记(二)【CGLIB浅拷贝BeanCopier的使用和详解】

CGLIB浅拷贝BeanCopier的使用和详解 一、bean拷贝工具 bean拷贝工具类比较 常用的bean拷贝工具类当中,主要有Apache提供的beanUtils、Spring提供的beanUtils、Cglib提供的beanCopier,性能上分析如下表所示(该表来自网上的数据) …

探索Apache Hudi核心概念 (3) - Compaction

Compaction是MOR表的一项核心机制,Hudi利用Compaction将MOR表产生的Log File合并到新的Base File中。本文我们会通过Notebook介绍并演示Compaction的运行机制,帮助您理解其工作原理和相关配置。 1. 运行 Notebook 本文使用的Notebook是:《A…

此战成硕,我成功上岸西南交通大学了~~~

友友们,好久不见,很长时间没有更一个正式点的文章了! 是因为我在去年年底忙着准备初试,今年年初在准备复试,直到3月底拟录取后,终于可以写下这篇上岸贴,和大家分享一下考研至上岸的一个过程 文章…

springboot+thymeleaf实现发Html邮件自由

2019年,我刚接触测试架构和测试开发类的工作时,经常会有自动化发邮件的功能,大都是从各个平台自动化统计一些数据出来,每周定时发一封邮件给领导交差,回过头来再看看我发的邮件,不美观,不专业。…

Android Jetpack:现代化Android开发的利器

Android Jetpack:现代化Android开发的利器 引言 随着移动应用的快速发展和用户体验的不断提升,现代化的Android应用开发变得愈发复杂和多样化。为了提高开发效率、简化代码、加速应用迭代,Google推出了Android Jetpack组件,成为现…