【办公类-30-01】(Python)大班毕业证书批量打印(幼儿信息、性别、毕业日期、学校、公章、签名、证书日期)

news/2024/11/24 13:47:26/

背景需求

大班毕业在即,需要打印大班幼儿毕业证书。(已有打印好的彩色证书)

常规操作模式:

1,统一盖章,反复签字

200份证书,每张证书上需要盖园所章、园长签字200次

 2.  每个班主任自己领取班级人数的毕业证书纸张,制作Word模板

(1)模板固定的信息:年龄、毕业年份、学校、日期,

(2)模板中替换的信息:幼儿名字、性别,需要打印一份,然后再修改名字和性别,再打印一份)

 存在问题:

1、重复盖章、签字,费时费力:总务老师盖章、手都酸了。园长签字,手指麻了。

2、教师打印替换名字,费时费力:去年我也是大班老师,手动操作修改名字,再一个一个打印,不仅担心打印错误。还需要两位老师共同配合,一张一张放纸(证书纸不多)

小结:传统毕业证打印,存在耗费人工的问题(批量盖章、批量签名、分散替换打印)。

因此我希望用Python批量功能,实现200多份名册的批量打印。

材料准备:

、扫描图片准备(签名、公章、毕业证图片版)

二、WORD模板准备

(1)插入证书模板

 (2)在Word里插入文本框,摆放在相应的位置上。

姓名、性别用{{name}}{{sex}},年龄、毕业日期、学校、证书日期都是固定不修改的,就用预设文字、数字 

 (3)插入“”公章PNG格式”和“签名png格式”

 

 模板做好了

 三、EXCLE模板准备

收集所有班级的毕业证名单(一共8个大班) 

EXCLE内部样式:

三、代码展示:

(一)单份EXCLE文件读取生成PDF:

用法:选择一个大班的EXCLe模板,输入一个班级的所有名单PDF。

 代码展示:

# -*- coding:utf-8 -*- 1 
'''
目的:大班毕业证书(一个班级单独打印)
作者:阿夏
日期:2023年6月12日 21:54
'''# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
import time
# 
numnum=int(input('班级(阿拉伯数字1,2,3,4,5,7,8,9)\n'))zpath=os.getcwd()+'\\'
zpath=r'D:\test\03办公类\11毕业册'+'\\'file_path=zpath+r'\零时Word'# 二、遍历excel,逐个生成word(form.docx是前面的模板)
try:os.mkdir(file_path)
except:passtpl = DocxTemplate(zpath+'毕业证书模板.docx')
IDcard = pd.read_excel(zpath+'(模板)大{}班毕业证名单.xlsx'.format(numnum))
nu=IDcard["nu"]
name = IDcard["name"]
sex =IDcard["sex"]  # str.rstrip()用于去掉换行符# math = autho['math']
# eng = autho['eng']# 遍历excel行,逐个生成
num = IDcard.shape[0]
for i in range(num):context = {"nu": nu[i],"name": name[i],"sex": sex[i],  }tpl = DocxTemplate(zpath+'毕业证书模板.docx')tpl.render(context)# tpl.save(file_path+r"\{} 的身份证.docx".format(name[i]))
#tpl.save(r'D:\test\03办公类\11毕业册\零时Word\{}.docx'.format('%02d'%nu[i]))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"D:\test\03办公类\11毕业册/零时Word/{}.docx".format('%02d'%nu[i])  # 要转换的文件:已存在outputFile = r"D:\test\03办公类\11毕业册/零时Word/{}.pdf".format('%02d'%nu[i])  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  'D:/test/03办公类/11毕业册/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/(打印合集)自己写3个 中6姓名名笔画字帖(28人共{}张).pdf".format(int(len(path))))
file_merger.write("D:/test/03办公类/11毕业册/(打印合集)大{}班毕业证书人.pdf".format(numnum))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('D:/test/03办公类/11毕业册/零时Word') #递归删除文件夹,即:删除非空文件夹

终端输入:

 

结果显示: 

 

 打印效果:

 

 

(二)多份EXCLE名单读取并生成PDF(批量):

用法:在所有大班信息都收集完成后,读取文件名字中的数字((模板)大1班毕业证名单、(模板)大2班毕业证名单)”,循环读取并自动生成。

 

 代码展示:

# -*- coding:utf-8 -*- 1 
'''
目的:大班毕业证书(所有大名单都收集后的批量打印)
作者:阿夏
日期:2023年6月12日 21:54
'''# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os# numnum=int(input('班级(阿拉伯数字1,2,3,4,5,7,8,9)\n'))
Numnum=['1','2','3','4','5','7','8','9']for numnum in Numnum: zpath=os.getcwd()+'\\'zpath=r'D:\test\03办公类\11毕业册'+'\\'file_path=zpath+r'\零时Word'# 二、遍历excel,逐个生成word(form.docx是前面的模板)try:os.mkdir(file_path)except:passtpl = DocxTemplate(zpath+'毕业证书模板.docx')IDcard = pd.read_excel(zpath+'(模板)大{}班毕业证名单.xlsx'.format(numnum))nu=IDcard["nu"]name = IDcard["name"]sex =IDcard["sex"]  # str.rstrip()用于去掉换行符# math = autho['math']# eng = autho['eng']# 遍历excel行,逐个生成num = IDcard.shape[0]for i in range(num):context = {"nu": nu[i],"name": name[i],"sex": sex[i],  }tpl = DocxTemplate(zpath+'毕业证书模板.docx')tpl.render(context)# tpl.save(file_path+r"\{} 的身份证.docx".format(name[i]))#tpl.save(r'D:\test\03办公类\11毕业册\零时Word\{}.docx'.format('%02d'%nu[i]))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"D:\test\03办公类\11毕业册/零时Word/{}.docx".format('%02d'%nu[i])  # 要转换的文件:已存在outputFile = r"D:\test\03办公类\11毕业册/零时Word/{}.pdf".format('%02d'%nu[i])  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)import osfrom PyPDF2 import PdfFileMergertarget_path =  'D:/test/03办公类/11毕业册/零时Word'pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]pdf_lst.sort()file_merger = PdfFileMerger()for pdf in pdf_lst:print(pdf)file_merger.append(pdf)# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/下载幼儿姓氏笔画/(打印合集)自己写3个 中6姓名名笔画字帖(28人共{}张).pdf".format(int(len(path))))file_merger.write("D:/test/03办公类/11毕业册/(打印合集)大{}班毕业证书人.pdf".format(numnum))file_merger.close()# doc.Close()# print('----------第5步:删除临时文件夹------------')    import shutilshutil.rmtree('D:/test/03办公类/11毕业册/零时Word') #递归删除文件夹,即:删除非空文件夹

终端显示(不用输入信息,直接运行即可)

 最后生成的结果——8个班级的PDF格式

 PDF样式:

  

使用反馈

前来领取证书的大班老师纷纷表示感谢

1、不用手动修改:“你这样打掉了,我们就不用一个名字一个名字修改了,不用担心打错了,没有证书纸!”

2、不用等候盖章:“这下,不用把证书拿去给领导敲章、签名,方便多了!”

3、生成速度极快:“这么快就打好了?你真牛!”(运行程序1分钟,打印1分钟)

小结:

     批量自动生成的班级幼儿名单PDF(一个班级28-33人一份连续的PDF),教师可以直接用彩色打印机(横版、色彩、单面、全部)在彩色毕业证模板上打印添加幼儿信息及彩色签名和公章。极大提高了“毕业证制作效率”

 技术改变生活 智慧创造未来!


 


http://www.ppmy.cn/news/368061.html

相关文章

letsencrypt certbot自动续订常用命令

查看证书信息 sudo certbot certificates返回 Found the following certs:Certificate Name: fileserver.kkappstore.comSerial Number: 31f31965a147edf46bdb32154d572201585Key Type: ECDSADomains: fileserver.kkappstore.comExpiry Date: 2023-08-02 03:02:3700:00 (VALI…

组合索引和单个索引的使用场景有什么不同

组合索引和单个索引在数据库查询中具有不同的使用场景。下面是它们的主要区别和适用场景: 单个索引: 单个索引是在单个列上创建的索引,用于加快对该列的查询和排序操作。适用于对单个列进行频繁的查询、排序或过滤操作的场景。适用于查询条…

Oracle 查询优化改写(第三章)

第三章 操作多个表 1.Union 与 OR 当在条件里面有or时,经常会改写为UNION,例如,我们在表emp中建立下面两个索引。 我们对比一下PLAN,会发现or走的FULLTABLE,而union使用的两列中的索引,从提高效率。 但在…

老版迅雷5.8无限制经典版

迅雷5.8不升级版是一款经典热门的P2P下载工具。迅雷5.8去广告绿色版已完全对弹出式广告进行屏蔽,并自动开启高速下载通道,支持磁力链接和网页下载,完美支持WIN8.1、WIN10,不定时检测去除无用组件,为用户提供绿色纯净的…

win7 sp1 x64 离线安装.net framework 4.6.1

在线安装vs2019出现如下问题,然后在线下载 .net framework 总是失败,具体如下图: 系统软硬件环境: win7 旗舰版 sp1 x64 ;威强工控机 4G内存 。 然后去微软网站下载 .net framework 。 https:// support.microsoft.c…

精简迅雷绿色单文件版

精简迅雷绿色单文件版 精简迅雷绿色单文件版,是提取于某PE系统内,纯绿色单文件放在U盘里有备无患,需要的小伙伴们自行下载。 某些打不开的情况可能是缺少运行库:运行库 点击下载 上一篇:吃书百万自媒体作者凑字神器…

win7登录密码破解

win7下设置了用户和密码后,密码忘记了很头痛,下面我们来讲解一下如何破解密码: 1.首先搞一个U盘启动盘,然后插进到电脑中,把U盘设置为启动项,以戴尔optiplex 380一键U盘启动的方法为例,电脑开机…

UpdatePack7R2 v22.11.10 Win7累积更新离线整合补丁

这是个Windows 7 更新补丁安装包,Win7累积更新离线安装包,它包括所有关键更新和安全更新及Internet Explorer所有版本的更新,此外还集成了NVMe驱动和USB3.0驱动,使用它还可以将累积更新封装到系统内(Install.wim映像文…