【Python】批量生成证书pptx
设置母版PPT,这里只插入一张背景图作为母版的第一个版式。
百度一张证书边框图片,比如
插入刚才的母版中作为背景:
接下来准备好姓名和编号,比如:
需要导入 python-pptx 和 pptx_ea_font 模块
# A4纸,横向,提前设置好母版PPT,这里只加一个背景作为母版 from pptx import Presentation import pptx_ea_font from pptx.util import Cm,Pt from pptx.enum.text import MSO_VERTICAL_ANCHOR,MSO_AUTO_SIZE from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT import pandas as pd #读取姓名和编号(需要变化的字符串) df = pd.read_excel(r"F:\py\姓名和编号.xlsx") #读取定义好的母版pptx prs = Presentation(r"F:\py\母版PPT.pptx") for i in range(0,df.shape[0]):#遍历姓名和编号(变化的字符串),此为批量生成 #print(df.values[i][0],df.values[i][1] ) slide = prs.slides.add_slide(prs.slide_layouts[0]) # 以母版的第一个版式为基础新增一页幻灯片 left = Cm(3.5) #框的位置,左 top = Cm(8) #框的位置,上 width = Cm(23) #框的长 height = Cm(5) #框的高,宽 text_box = slide.shapes.add_textbox(left , top ,width ,height) #添加第一个文本框 tf = text_box.text_frame #tf.text = "这是文本框中的文字" tf.word_wrap = True #自动换行 p = tf.add_paragraph() #在文本框添加段落 p.text = " 修士于天云四年贰月十九日参加青云门举办的第三十四届青云试,成绩优异,特发此证。凭此证可御剑飞行。" p.alignment = PP_PARAGRAPH_ALIGNMENT.LEFT #左对齐 pptx_ea_font.set_font(p,"宋体") p.font.bold = True #是否加粗 p.font.size = Pt(22) #字号 p.line_spacing = Pt(34) #行距 text_box2 = slide.shapes.add_textbox(Cm(4.9) , Cm(15) ,Cm(10) ,Cm(1.2)) #添加第二个文本框 tf2 = text_box2.text_frame p2 = tf2.add_paragraph() #在文本框添加段落 p2.text = "编号:{}".format(df.values[i][0]) #编号 p2.alignment = PP_PARAGRAPH_ALIGNMENT.LEFT #左对齐 pptx_ea_font.set_font(p2,"黑体") p2.font.bold = False #是否加粗 p2.font.size = Pt(16) #字号 text_box4 = slide.shapes.add_textbox(Cm(5.2) , Cm(8.1) ,Cm(2.2) ,Cm(1.3)) #添加第三个文本框 tf4 = text_box4.text_frame p4 = tf4.add_paragraph() #在文本框添加段落 p4.text = "{}".format(df.values[i][1]) #姓名 p4.alignment = PP_PARAGRAPH_ALIGNMENT.LEFT #左对齐 pptx_ea_font.set_font(p4,"隶书") p4.font.bold = True #是否加粗 p4.font.size = Pt(22) #字号 text_box3 = slide.shapes.add_textbox(Cm(19.5) , Cm(15) ,Cm(7) ,Cm(1.2)) #添加第四个文本框 tf3 = text_box3.text_frame p3 = tf3.add_paragraph() #在文本框添加段落 p3.text = "天云四年贰月十九日" #日期 p3.alignment = PP_PARAGRAPH_ALIGNMENT.LEFT #左对齐 pptx_ea_font.set_font(p3,"黑体") p3.font.bold = False #是否加粗 p3.font.size = Pt(16) #字号 text_box0 = slide.shapes.add_textbox(Cm(8.5) , Cm(3.5) ,Cm(21.5) ,Cm(1.5)) #添加第五个文本框 tf0 = text_box0.text_frame p0 = tf0.add_paragraph() #在文本框添加段落 p0.text = "修真行业青云门御剑飞行证" #标题 p0.alignment = PP_PARAGRAPH_ALIGNMENT.LEFT #左对齐 pptx_ea_font.set_font(p0,"微软雅黑") p0.font.bold = True #是否加粗 p0.font.size = Pt(30) #字号 prs.save(r"F:\py\生成的PPT.pptx")
结果: