【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")

结果:

 

 

 
posted @ 2024-03-14 17:46  山鬼谣`  阅读(59)  评论(0编辑  收藏  举报