tfse-model-api-v0.2/Certificate/PdfCertificate.py

64 lines
2.3 KiB
Python
Raw Normal View History

2022-01-11 16:56:50 +08:00
import time
from reportlab.lib.colors import HexColor
from reportlab.lib.units import cm, inch
from reportlab.platypus import Paragraph, Image, PageBreak, Frame, Table
from reportlab.platypus.doctemplate import PageTemplate, BaseDocTemplate
from reportlab.platypus.tableofcontents import TableOfContents
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from Certificate.scripts.path_tool import *
from Report.scripts.PdfStyle 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.jpg'), 0, 0, 600, 850)
def gen_text(self):
style = getSampleStyleSheet()
2022-01-11 17:03:45 +08:00
self.doc.setFont('SIMSUN', 20)
2022-01-11 16:56:50 +08:00
self.doc.drawString(2.9 * inch, 450, self.text_data['企业名称'])
2022-01-11 17:03:45 +08:00
self.doc.setFont('SIMSUN', 12, leading=5)
2022-01-11 16:56:50 +08:00
self.doc.drawString(2.8 * inch, 433, '统一社会信用代码:{}'.format(self.text_data['统一社会信用代码']))
2022-01-11 17:03:45 +08:00
self.doc.setFont('SIMSUN', 35)
2022-01-11 16:56:50 +08:00
self.doc.setFillColor('#B79249')
self.doc.drawString(3.2 * inch, 285, self.text_data['企业级别'])
2022-01-11 17:03:45 +08:00
self.doc.setFont('SIMSUN', 10)
2022-01-11 16:56:50 +08:00
self.doc.setFillColor('black')
self.doc.drawString(1.28 * inch, 260, '证书编号:{}'.format(self.text_data['证书编号']))
2022-01-11 17:03:45 +08:00
self.doc.setFont('SIMSUN', 10)
2022-01-11 16:56:50 +08:00
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()
if __name__ == '__main__':
data = {
"企业名称": "远东资信评估有限公司",
"统一社会信用代码": "91310101132508092K",
"企业级别": "AA级企业",
"证书编号": "FECR2022010100000001",
"有效日期": "2022年1月1日至2023年1月1日",
}
file_name = '{}_{}'.format(data['企业名称'], int(time.time()))
c = CertificateGenerator(name=file_name, text_data=data)
c.gen()