python 批量打印证书(保存未调试)

发布时间 2023-04-16 09:06:43作者: myrj
import os
from PIL import Image,ImageDraw,ImageFont
import xlrd

# 要求录入学校信息的证书def zs_school(size, left, height, n, c, m1, d1, m2, d2, t):
    newfont = ImageFont.truetype(font="Songti.ttc", size=size)
    draw.text((600,height),n, font = newfont, fill= "black")
    draw.text((left,1700),c, font = newfont, fill= "black")
    draw.text((1750,1700),m1, font = newfont, fill= "black")
    draw.text((1900,1700),d1, font = newfont, fill= "black")
    draw.text((300,1850),m2, font = newfont, fill= "black")
    draw.text((550,1850),d2, font = newfont, fill= "black")
    draw.text((520,2150),t, font = newfont, fill= "black")
    # old_img.show()    #运行显示
    old_img.save(str(int(l))+n+".png")

# 不要求录入学校信息的证书def zs(n, m1, d1, m2, d2, t):# 设置图片文字,字体类型,以及字体大小,颜色
    newfont=ImageFont.truetype('Songti.ttc',100)
    draw.text((600,1380),n, font = newfont, fill= "black")
    draw.text((700,1700),m1, font = newfont, fill= "black")
    draw.text((850,1700),d1, font = newfont, fill= "black")
    draw.text((1170,1700),m2, font = newfont, fill= "black")
    draw.text((1380,1700),d2, font = newfont, fill= "black")
    draw.text((1400,2000),t, font = newfont, fill= "black")
    # old_img.show()    #运行显示
    old_img.save(str(int(l))+n+".png")

# 导入 Excel 文件
data = xlrd.open_workbook('/Users/wangj676/Desktop/table1.xlsx')
table = data.sheet_by_index(0)
# 给各列表变量赋值
list =  table.col_values(0)[0:]
name = table.col_values(1)[0:]
school = table.col_values(4)[0:]
time = table.col_values(10)[0:]
month1 = table.col_values(11)[0:]
month2 = table.col_values(12)[0:]
day1 = table.col_values(13)[0:]
day2 = table.col_values(14)[0:]

os.chdir("/Users/wangj676/Desktop/pics")
# 循环生成新图片for i in range(0,113):
    l = list[i]
    n = name[i]
    s = school[i]
    m1 = str(int(month1[i]))
    m2 = str(int(month2[i]))
    d1 = str(int(day1[i]))
    d2 = str(int(day2[i]))
    t = str(int(time[i]))
    c=str(s)+" "+str(n) # 学校+“空格”+姓名# 判断是否要求录入学校信息:是if school[i]!="":
        old_img = Image.open("/Users/wangj676/Desktop/lxh.png")
        draw = ImageDraw.Draw(old_img)
        # 判断字符长度,以便设置字体大小和左边距if len(c)>=10:
            # 设置位置
            length=len(c)
            left=600-22*length
            height = 1400
            size = 80# 调用 zs_school() 函数
            zs_school(size, left, height, n, c, m1, d1, m2, d2, t)
        else:
            # 设置位置
            length=len(c)
            left=600-18*length
            height = 1380
            size = 100# 调用 zs_school() 函数
            zs_school(size, left, height, n, c, m1, d1, m2, d2, t)

    # 判断是否要求录入学校信息:否if school[i]=="":
        old_img = Image.open("/Users/wangj676/Desktop/lxh0.png")
        draw = ImageDraw.Draw(old_img)
        # 调用 zs() 函数
        zs(n, c, m1, d1, m2, d2, t)