90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
import time
|
||
|
||
from reportlab.lib.units import cm, inch
|
||
from reportlab.lib.pagesizes import letter
|
||
from reportlab.pdfgen import canvas
|
||
|
||
from Certificate.scripts.path_tool import *
|
||
Width, Height = letter
|
||
|
||
|
||
class CertificateGenerator:
|
||
|
||
def __init__(self, **kwargs):
|
||
# 文字数据
|
||
self.text_data = kwargs['text_data']
|
||
# 调用模板,在临时报告文件夹中创建指定名称的PDF文档
|
||
self.doc = canvas.Canvas(gen_pdf_path(name=kwargs['name']))
|
||
# 内容框
|
||
self.story = list()
|
||
|
||
def gen_cover(self):
|
||
self.doc.drawImage(get_pic_path(pic_name='certificate_02.jpg'), 0, 0, 600, 850)
|
||
|
||
def gen_esg_cover(self):
|
||
self.doc.drawImage(get_pic_path(pic_name='certificate_esg.jpg'), 0, 0, 600, 850)
|
||
|
||
def gen_text(self):
|
||
self.doc.setFont('SourceHanSerifCN-Bold', 20)
|
||
margin = (Width - len(self.text_data['企业名称']) * 19) / 2
|
||
self.doc.drawString(margin, 450, self.text_data['企业名称'])
|
||
self.doc.setFont('SIMSUN', 12, leading=5)
|
||
self.doc.drawString(2.8 * inch, 433, '统一社会信用代码:{}'.format(self.text_data['统一社会信用代码']))
|
||
self.doc.setFont('SourceHanSerifCN-Bold', 35)
|
||
self.doc.setFillColor('#B79249')
|
||
self.doc.drawString(3.2 * inch, 285, '{}级企业'.format(self.text_data['企业级别']))
|
||
self.doc.setFont('SIMSUN', 10)
|
||
self.doc.setFillColor('black')
|
||
self.doc.drawString(1.28 * inch, 260, '证书编号:{}'.format(self.text_data['证书编号']))
|
||
self.doc.setFont('SIMSUN', 10)
|
||
self.doc.drawString(4.6 * inch, 260, '有效日期:{}'.format(self.text_data['有效日期']))
|
||
|
||
def gen_esg_text(self):
|
||
# 企业名称
|
||
self.doc.setFont('SourceHanSerifCN-Bold', 20)
|
||
margin = (Width - len(self.text_data['企业名称']) * 19) / 2
|
||
self.doc.drawString(margin, 450, self.text_data['企业名称'])
|
||
# 统一社会信用代码
|
||
self.doc.setFont('SIMSUN', 12, leading=5)
|
||
self.doc.drawString(2.8 * inch, 433, '统一社会信用代码:{}'.format(self.text_data['统一社会信用代码']))
|
||
# ESG得分
|
||
self.doc.setFont('SourceHanSerifCN-Bold', 12, leading=5)
|
||
self.doc.setFillColor('#B79249')
|
||
self.doc.drawString(5.84 * inch, 366, '{}'.format(self.text_data['ESG得分']))
|
||
# 评价等级
|
||
self.doc.setFont('SourceHanSerifCN-Bold', 35)
|
||
self.doc.drawString(3.2 * inch, 285, '{}级企业'.format(self.text_data['评价等级']))
|
||
# 证书编号
|
||
self.doc.setFont('SIMSUN', 10)
|
||
self.doc.setFillColor('black')
|
||
self.doc.drawString(1.28 * inch, 260, '证书编号:{}'.format(self.text_data['证书编号']))
|
||
# 有效日期
|
||
self.doc.setFont('SIMSUN', 10)
|
||
self.doc.drawString(4.6 * inch, 260, '有效日期:{}'.format(self.text_data['有效日期']))
|
||
|
||
def gen(self):
|
||
self.gen_cover()
|
||
self.gen_text()
|
||
self.doc.showPage()
|
||
self.doc.save()
|
||
|
||
def gen_esg(self):
|
||
self.gen_esg_cover()
|
||
self.gen_esg_text()
|
||
self.doc.showPage()
|
||
self.doc.save()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
data = {
|
||
"企业名称": "远东资信评估有限公司",
|
||
"统一社会信用代码": "91310101132508092K",
|
||
"企业级别": "AA",
|
||
"证书编号": "CCRE012022012410045437",
|
||
"有效日期": "2022年1月1日至2023年1月1日",
|
||
}
|
||
file_name = '{}_{}'.format(data['企业名称'], int(time.time()))
|
||
c = CertificateGenerator(name=file_name, text_data=data)
|
||
c.gen()
|
||
|