Форум сайта python.su
from reportlab.pdfgen import canvas from reportlab.lib.units import cm from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont pdfmetrics.registerFont(TTFont('Times', 'times.ttf',)) class printQRCode(canvas.Canvas): def template(self, string): num_PU = string[4] page_width = 2.4 page_heigh = page_width + 0.6 self.setPageSize((page_width * cm, page_heigh*cm)) str2 = ';'.join(string) print(str2) qr = pyqrcode.create(str2, error='L', encoding='utf-8') qr.png('test.png', scale=4, module_color=(0, 0, 0, 255), background=(255, 255, 255, 255), quiet_zone=4) #черная картинка и белый фон self.drawImage('test.png', 0 * cm, (page_heigh - 2.4) * cm, page_width * cm, page_width * cm) os.remove('test.png') #если можно будет обойтись без создания промежуточного файла, то надо удалить self.setFont('Times', 9) if len(num_PU) > 12: num_PU1 = num_PU[0:12] num_PU2 = num_PU[12:len(num_PU)] self.drawString((0.15) * cm, (page_heigh - 2.4) * cm - 5, num_PU1) #текстовая строка 12 знаков self.drawString((0.15) * cm, (page_heigh - 2.4) * cm - 14, num_PU2) else: self.drawString((0.15) * cm, (page_heigh - 2.4) * cm - 5, num_PU) # текстовая строка 12 знаков self.showPage() def end_document(self): self.save()
QRCode = printQRCode(datetime.strftime(datetime.now(), qrcode_filename)) for i in range(len(self.str1)) : QRCode.template(self.str1[i]) QRCode.end_document()
Отредактировано eldev (Март 6, 2018 14:17:20)
Офлайн