【办公类-18-03】(Python)中班米罗可儿证书批量生成打印(班级、姓名)

作品展示——米罗可儿证书打印幼儿姓名

 

背景需求 

2024年3月1日,中4班孩子一起整理美术操作材料《米罗可儿》的操作本——将每一页纸撕下来,分类摆放、确保纸张上下位置正确。每位孩子们都非常厉害,不仅完成了自己的一本,还将没有来园孩子的操作本也撕开了。正确率高达99%(有5张纸没有摆放正确)

册子整理后,除了封面和封底,最后一页就是“荣誉证书”

以前这些证书,都是班主任手写的(班级、姓名、教师签名、学校、日期),一个班30位孩子,班主任写起来也挺快的。

今年整理完成后,搭档感叹着:“自从用了电脑,钢笔字是越来越差了!”

于是我想到,去年为大班毕业班批量打印过毕业名册。

【办公类-18-01】(Python)大班毕业证书批量打印(幼儿信息、性别、毕业日期、学校、公章、签名、证书日期)_python c1证书模板-CSDN博客文章浏览阅读339次。【办公类-18-01】(Python)大班毕业证书批量打印(幼儿信息、性别、毕业日期、学校、公章、签名、证书日期)_python c1证书模板https://blog.csdn.net/reasonsummer/article/details/131187888?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22131187888%22%2C%22source%22%3A%22reasonsummer%22%7D

干嘛不用程序来批量打印“米罗可儿”荣誉证书呢?

材料准备:

一、扫描图片准备(园长或班主任手写签名的扫描、毕业证图片扫描)

二、WORD模板准备

(0)测算证书纸张大小——比A4小

详细测算后,纸张是28.5*20.8CM

(1)插入证书模板——长宽要自定义设置

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

姓名、班级用{{name}}{{classroom}},

教师签名图片 、学校、证书日期都是固定不修改的,就用预设文字、数字 、图片

 (3)插入签名png格式”——签名图片最好在PS调整一下,字体粗一点、黑一点。

插入文档、

 

 模板做好了,把背景图删除

本次我发现“荣誉证书”纸张比A4小 ,所以word模板也变小了。

去年打印大班毕业证书时,可能证书纸张也比a4小,所以造成了打印时无数次调整{{}}的摆放位置。

 三、EXCLE模板准备

收集所有中4班幼儿名单 、EXCLE内部样式:

EXCEL内部名字(表格在第一个)2-4个名字 举例

三、代码展示:

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

用法:制作中4班米罗可儿证书名单

 代码展示:

# -*- coding:utf-8 -*- 1 
'''
目的:米罗可儿证书(一个班级单独打印)
作者:阿夏
日期:2024年3月4日 21:54
'''# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
import time
# 
numnum=int(input('班级(4)\n'))
l=int(input('1、有背景图、2、无背景图\n'))zpath=os.getcwd()+'\\'
zpath=r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书'+"\\"file_path=zpath+r'\零时Word'# 二、遍历excel,逐个生成word(form.docx是前面的模板)
try:os.mkdir(file_path)
except:passIDcard = pd.read_excel(zpath+'04(模板)中4班米罗可儿证书名单.xlsx'.format(numnum))
nu=IDcard["nu"]
name = IDcard["name"]
classroom =IDcard["classroom"]  # 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],"classroom": classroom[i],  }if l==1:tpl = DocxTemplate(zpath+'00米罗可儿证书模板(有背景图).docx')if l==2:tpl = DocxTemplate(zpath+'00米罗可儿证书模板(无背景图).docx')tpl.render(context)# tpl.save(file_path+r"\{} 的身份证.docx".format(name[i]))
#tpl.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书/零时Word\{}.docx'.format('%02d'%nu[i]))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书/零时Word/{}.docx'.format('%02d'%nu[i])  # 要转换的文件:已存在outputFile = r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书/零时Word/{}.pdf'.format('%02d'%nu[i])  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)time.sleep(2)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书/零时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))))if l==1:file_merger.write(r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书\(打印合集)中{}班毕业证书{}人(有背景图).pdf'.format(numnum,nu[i]))
if l==2:file_merger.write(r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书\(打印合集)中{}班毕业证书{}人(无背景图).pdf'.format(numnum,nu[i]))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree(r'C:\Users\jg2yXRZ\OneDrive\桌面\米罗可儿证书/零时Word') #递归删除文件夹,即:删除非空文件夹

终端输入:

1、有背景图的结果(观察位置用)

 

结果显示: 

2、无背景图的结果(打印用)

 打印效果:

 下周用中班办公室的电脑和打印机打印(电脑可以设置打印机的自定义尺寸),观看打印位置是否正好在证书的空行处。

 使用反馈

一、优势:

1、PDF格式批量制作荣誉证书模板,快速打印。

2、让打印后的证书 看上去更正式(打印版比手写板更正式规整),减轻教师手写工作量。

二、不足:

只有29张证书,如果打印机卡纸了,打印错误,就不可能有多的证书了,打印的时候,提心吊胆的o(╥﹏╥)o

以下是多个班级打印证书,没有做,不用看了,但是说不准以后会有机会做,先放着占个位

(二)多份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样式:

  


 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mock工具whistle使用笔记

1、下载安装地址:关于whistle GitBook 安装完后,用本地的ip:设置的端口就可以反问,端口默认的8899,可以自定义 2、抓包https: (1)打开https (2)下载证书&…

QObject::moveToThread: Current thread (0x56059f9b0f70) is not the object‘s t

座右铭:怎么简单怎么来,以实现功能为主。 欢迎大家关注公众号与我交流 解决方法 pip install opencv-python4.1.2.30

C习题003:球筐投球(一排)

题目 输入样例 在这里给出一组输入。例如&#xff1a; 5 3 7 5 7 7 3 1 5 3 1 5 2 4 4 4输出样例 在这里给出相应的输出。例如&#xff1a; 12 10 12 16 8代码长度限制 16 KB 时间限制400 ms 内存限制 64 MB 栈限制 8192 KB 代码 #include<stdio.h> int main() {int…

【蓝桥杯】分巧克力

一.题目描述 二.输入描述 三.输出描述 四.问题分析 //分巧克力 #include <iostream> #include <algorithm>using namespace std;const int N1e510; int n,k,h[N],w[N];bool judge(int mid){int cnt0;for(int i0;i<n;i){cnt(h[i]/mid)*(w[i]/mid);if(cnt>k)r…

都说了能不动就别动,非要去调整,出生产事故了吧

MyBatis 替换成 MyBatis-Plus 背景介绍 一个老项目&#xff0c;数据库用的是 MySQL 5.7.36 &#xff0c; ORM 框架用的 MyBatis 3.5.0 &#xff0c; mysql-connector-java 版本是 5.1.26 新来了一个干练的小伙&#xff0c;精力充沛&#xff0c;看着就是一个喜欢折腾的主 他…

JProfiler 14 for Mac 14.0激活版:Java性能分析的终极工具

JProfiler是一款专业的Java应用程序性能分析工具&#xff0c;可帮助开发人员识别和解决Java应用程序中的性能问题。JProfiler支持Java SE、Java EE和Android平台&#xff0c;提供了多种分析选项&#xff0c;包括CPU分析、内存分析和线程分析等。 软件下载&#xff1a;JProfiler…

一命通关双指针

双指针 简介 双指针严格来说不是解决某一种具体问题的算法&#xff0c;而是对于某些场景下节省时空复杂度的优化方法。例如在以某条件遍历数组的时候&#xff0c;如果条件需要我们找到满足关系的两个元素&#xff0c;如果我们直接去遍历数组中的所有两个元素对&#xff0c;时…

CrossOver 24下载-CrossOver 24 for Mac下载 v24.0.0中文永久版

CrossOver 24是一款可以让mac用户能够自由运行和游戏windows游戏软件的虚拟机类应用&#xff0c;虽然能够虚拟windows但是却并不是一款虚拟机&#xff0c;也不需要重启系统或者启动虚拟机&#xff0c;类似于一种能够让mac系统直接运行windows软件的插件。它以其出色的跨平台兼容…

Android WebView访问网页+自动播放视频+自动全屏+切换横屏

一、引言 近期&#xff0c;我发现电视家、火星直播等在线看电视直播的软件都已倒闭&#xff0c;而我奶奶也再无法通过这些平台看电视了。她已六十多岁&#xff0c;快七十岁啦。这些平台的倒下对我来说其实没有多大的影响&#xff0c;但是对于文化不多的她而言&#xff0c;生活中…

java-ssm-jsp房屋中介服务平台的设计与实现

java-ssm-jsp房屋中介服务平台的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

从入门到精通的Android进阶学习笔记整理,你有过迷茫吗

面试题 一般Android面试分为两部分&#xff1a;Java部分和Android部分&#xff0c;下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。 一 JAVA相关 1&#xff09;JAVA基础 1.java基本数据类型有哪些&#xff0c;int&#xff0c; long占几个字节 2. 和 equals有什…

beets,一个有趣的 Python 音乐信息管理工具!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 什么是Beet库&#xff1f; 安装Beet库 使用Beet库 Beet库的功能特性 1. 多种音乐格式支持 2. 自动标签识…