def buat_kotak(c, nomor, height, baris, kolom, string): awal = 35 + (130 * (kolom - 1)) + (5 * (kolom - 1)) panjang = awal + 130 brs = height - (60 + (115 * (baris - 1))) brs2 = height - (165 + (115 * (baris - 1))) c.line(awal, brs, panjang, brs) c.line(awal, brs, awal, brs2) c.line(awal, brs2, panjang, brs2) c.line(panjang, brs2, panjang, brs) qrw = QrCodeWidget(string) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(100, 100, transform=[100. / w, 0, 0, 100. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, c, awal + 15, brs - 90) c.setFont('Helvetica', 12) c.drawString(awal + 6, brs - 92, string) c.setFont('Helvetica', 6) c.drawString(awal + 2, brs2 + 2, str(nomor))
def IdentificaListaPresenca(myCanvas, disciplina, pagina): margin = 2 * cm marginleft = margin margintop = height - 1.1 * margin codigo = DataInvertida(disciplina.data) + '-' + disciplina.polo + \ '-' + disciplina.disciplina + '-' + disciplina.prova + '-' + \ 'presenca' + '-' + format(pagina, '02d') # Dados do aluno e da prova myCanvas.setFont('Helvetica-Bold', 12) myCanvas.drawString(marginleft + 1.1 * cm, 26 * cm, disciplina.nomePolo) myCanvas.drawString(marginleft + 1.6 * cm, 25.4 * cm, codigo) myCanvas.drawString(marginleft + 11.6 * cm, 25.4 * cm, disciplina.data) myCanvas.drawString(marginleft + 2 * cm, 24.8 * cm, disciplina.disciplina + ' - ' + disciplina.nomeDisciplina) # Coloca QR-Code no canto superior direito qrw = QrCodeWidget(codigo) qrsize = 100.0 b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(qrsize, qrsize, transform=[qrsize/w, 0, 0, qrsize/h, 0, 0]) d.add(qrw) renderPDF.draw(d, myCanvas, 16 * cm, margintop - h + 28) return
def make_pdf(data): page_width, page_height = A4 page_margin = 10.0 qr_width, qr_height = 60.0, 60.0 qr_margin = 5.0 # this is a desired margin, not the actual one num_rows = int(math.floor((page_height - 2 * page_margin) / (qr_height + qr_margin))) num_cols = int(math.floor((page_width - 2 * page_margin) / (qr_width + qr_margin))) qr_vertical_margin = ((page_height - 2 * page_margin) - num_rows * qr_height) / num_rows qr_horizontal_margin = ((page_width - 2 * page_margin) - num_cols * qr_width) / num_cols qr = QrCodeWidget(data) output = cStringIO.StringIO() p = canvas.Canvas(output, pagesize=A4) b = qr.getBounds() w, h = b[2]-b[0], b[3]-b[1] d = Drawing(qr_width, qr_height, transform=[qr_width / w, 0, 0, qr_height / h, 0, 0]) d.add(qr) for i in xrange(num_cols): x = page_margin + i * (qr_horizontal_margin + qr_width) for j in xrange(num_rows): y = page_margin + j * (qr_vertical_margin + qr_height) renderPDF.draw(d, p, x, y) p.showPage() p.save() pdf_output = output.getvalue() output.close() return pdf_output
def generar_credencial(request, pk): p = Participante.objects.get(pk=pk) p.credencial = True p.save() response = HttpResponse(content_type='application/pdf') pdf_name = "crendecial.pdf" # llamado clientes response['Content-Disposition'] = 'inline; filename=%s' % pdf_name buff = BytesIO() c = canvas.Canvas(buff, pagesize=letter) c.setFont('Helvetica-BoldOblique', 16) c.drawCentredString(140,680,(p.nombres).upper()) c.setFont('Helvetica', 10) c.drawString(105,645,(p.apellidos).upper()) c.drawCentredString(150,618,(p.club).upper()) c.drawCentredString(145,593,(p.ciudad).upper()) qrw = QrCodeWidget('CONFERENCIA ROTARY 4690|2018|'+(p.nombres + ' ' + p.apellidos).upper()) b = qrw.getBounds() w=b[2]-b[0] h=b[3]-b[1] d = Drawing(40,40,transform=[40./w,0,0,40./h,0,0]) d.add(qrw) renderPDF.draw(d, c, 230, 580) c.showPage() c.save() response.write(buff.getvalue()) buff.close() return response
def respond_with_permit_pdf(permit): """ :param permit: The permit for which to generate the PDF :return: An HTTP response """ # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type="application/pdf") response["Content-Disposition"] = 'attachment; filename="permit_%05d.pdf"' % permit.pk # Produce PDF using ReportLab: p = canvas.Canvas(response) pageW = defaultPageSize[0] pageH = defaultPageSize[1] refX = pageW / 2 refY = pageH - 6.25 * inch # The tag that gets placed near the location. p.rect(refX - 2.0 * inch, refY - 0 * inch, 4 * inch, 5 * inch) refY += 4.5 * inch # Static header: p.setFont("Helvetica", 14) p.drawCentredString(refX, refY - 0.00 * inch, "XEROCRAFT HACKERSPACE") p.setFont("Helvetica-Bold", 28) p.drawCentredString(refX, refY - 0.40 * inch, "PARKING PERMIT") p.setFont("Helvetica", 14) p.drawCentredString(refX, refY - 0.66 * inch, "MEMBER-CLAIMED PROPERTY") # Changing refY allows the follwoing to be moved up/down as a group, w.r.t. the text above. refY -= 3.0 * inch # QR Code: qr = QrCodeWidget('{"permit":%d}' % permit.id) qrSide = 2.5 * inch # REVIEW: This isn't actually 2.3 inches. What is it? bounds = qr.getBounds() qrW = bounds[2] - bounds[0] qrH = bounds[3] - bounds[1] drawing = Drawing(1000, 1000, transform=[qrSide / qrW, 0, 0, qrSide / qrH, 0, 0]) drawing.add(qr) renderPDF.draw(drawing, p, refX - qrSide / 2, refY) p.setFont("Helvetica", 10) p.drawCentredString(refX, refY - 0.00 * inch, permit.short_desc) u = permit.owner.auth_user p.drawCentredString(refX, refY - 0.20 * inch, "Parked by: %s %s" % (u.first_name, u.last_name)) p.drawCentredString(refX, refY - 0.40 * inch, "Permit #%05d" % permit.id) p.setFont("Helvetica", 14) if permit.ok_to_move: p.drawCentredString(refX, refY - 0.80 * inch, "It is OK to carefully move this item") p.drawCentredString(refX, refY - 1.00 * inch, "to another location, if required.") else: p.drawCentredString(refX, refY - 0.80 * inch, "This item is fragile. Please attempt") p.drawCentredString(refX, refY - 1.00 * inch, "to contact me before moving it.") p.showPage() p.save() return response
def Identificacao(myCanvas, dados, pagina): margin = 2 * cm marginleft = margin margintop = height - 1.1 * margin myCanvas.setStrokeColorRGB(0, 0, 0) myCanvas.setFillColorRGB(0, 0, 0) codigo = dados.codigo + '-' + format(pagina, '02d') # Dados do aluno e da prova myCanvas.setFont('Helvetica-Bold', 12) myCanvas.drawString(marginleft + 1.1 * cm, 25.4 * cm, dados.nome) myCanvas.drawString(marginleft + 0.7 * cm, 24.8 * cm, dados.ra) myCanvas.drawString(marginleft + 4.2 * cm, 24.8 * cm, dados.nomePolo) myCanvas.drawString(marginleft + 12 * cm, 24.8 * cm, dados.data) myCanvas.drawString(marginleft + 1.3 * cm, 24.2 * cm, dados.curso) myCanvas.drawString(marginleft + 9.3 * cm, 24.2 * cm, dados.turma) myCanvas.drawString(marginleft + 13.7 * cm, 24.2 * cm, dados.bimestre) myCanvas.drawString(marginleft + 2 * cm, 23.6 * cm, dados.disciplina + ' - ' + dados.nomeDisciplina) myCanvas.drawString(marginleft + 1.5 * cm, 23 * cm, codigo) # Coloca QR-Code no canto superior direito qrw = QrCodeWidget(codigo) qrsize = 100.0 b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(qrsize, qrsize, transform=[qrsize/w, 0, 0, qrsize/h, 0, 0]) d.add(qrw) renderPDF.draw(d, myCanvas, 16 * cm, margintop - h + 28) return
def generate_qr(self, text): pass qr_code = QrCodeWidget(text, barLevel='M') bounds = qr_code.getBounds() width = bounds[2] - bounds[0] height = bounds[3] - bounds[1] self.qr_draw = Drawing(20, 20, transform=[40./width,0,0,40./height,0,0]) self.qr_draw.add(qr_code)
def qr_code_drawing(text_value, name): qrw = QrCodeWidget(text_value) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(120, 120, transform=[120. / w, 0, 0, 120. / h, 0, 0]) d.add(qrw) d.save(formats=['png'], outDir='media/barcode/', fnRoot=str(name))
def test_qr_code_with_comma(self): from reportlab.graphics.barcode.qr import QrCodeWidget from reportlab.graphics.shapes import Drawing i = QrCodeWidget("VALUE WITH A COMMA,") x0, y0, x1, y1 = i.getBounds() D = Drawing(x1-x0, y1-y0) D.add(i) D.save(['gif','pict','pdf'], outDir=self.outDir, fnRoot="QR_with_comma")
def generate_qr(request, route_id): if not request.user.is_authenticated: return render(request, "not_registered.html") route = Route.objects.get(uuid=route_id) # Get routes checkpoints = Checkpoint.objects.filter(route=route_id).order_by('name') # Get teams teams = Team.objects.filter(route=route_id).all() # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = f'attachment; filename="{route.name}.pdf"' p = canvas.Canvas(response) for checkpoint in checkpoints: qrw = QrCodeWidget(f"https://piraat-hike-tracker.herokuapp.com/checkpoint/{checkpoint.uuid}") b = qrw.getBounds() qrw.barHeight = 20*cm qrw.barWidth = 20*cm d = Drawing(20*cm, 20*cm) d.add(qrw) p.setFont('Helvetica',20) p.drawCentredString(21*cm/2, 24*cm, "CHECKPOINT") p.setFont('Helvetica',30) p.drawCentredString(21*cm/2, 22*cm, checkpoint.name) p.setFont('Helvetica',15) p.drawCentredString(21*cm/2, 20*cm, f"QR code voor {route.name}. S.v.p. laten hangen.") renderPDF.draw(d, p, 0, 0) p.showPage() for team in teams: qrw = QrCodeWidget(f"https://piraat-hike-tracker.herokuapp.com/register/{team.uuid}") b = qrw.getBounds() qrw.barHeight = 10*cm qrw.barWidth = 10*cm d = Drawing(10*cm, 10*cm) d.add(qrw) p.setFont('Helvetica',20) p.drawCentredString(21*cm/2, 24*cm, "TEAM") p.setFont('Helvetica',30) p.drawCentredString(21*cm/2, 22*cm, team.name) p.setFont('Helvetica',15) p.drawCentredString(21*cm/2, 20*cm, f"Scan mij om je telefoon te registreren!") renderPDF.draw(d, p, 5*cm, 0) p.showPage() p.save() return response
def get_location_qrs(request, start_pk): """Generate the PDF for the small sign that identifies a location.""" start_pk = int(start_pk) # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type="application/pdf") response["Content-Disposition"] = 'attachment; filename="locs_from_%04d.pdf"' % start_pk # Produce PDF using ReportLab: p = canvas.Canvas(response) pageW = defaultPageSize[0] pageH = defaultPageSize[1] marginX = 1.1 * inch marginY = 1.1 * inch spacingX = 0 * inch spacingY = 0 * inch tagw = 1.0 * inch tagh = 1.3 * inch xCount = 7 yCount = 8 for y in range(yCount): for x in range(xCount): centerX = marginX + x * (tagw + spacingX) centerY = pageH - (marginY + y * (tagh + spacingY)) # p.rect(centerX-tagw/2, centerY-tagh/2, tagw, tagh) l = centerX - tagw / 2 r = l + tagw b = centerY - tagh / 2 t = b + tagh m = 0.05 * inch p.lines([(l, t - m, l, t), (l, t, l + m, t)]) p.lines([(l, b + m, l, b), (l, b, l + m, b)]) p.lines([(r - m, t, r, t), (r, t, r, t - m)]) p.lines([(r - m, b, r, b), (r, b, r, b + m)]) loc_pk = start_pk + xCount * y + x Location.objects.get_or_create(pk=loc_pk) # QR Code: qr = QrCodeWidget('{"loc":%d}' % loc_pk) bounds = qr.getBounds() qrW = bounds[2] - bounds[0] qrH = bounds[3] - bounds[1] xx = 1.1 * tagw yy = 1.1 * tagw drawing = Drawing(xx, yy, transform=[xx / qrW, 0, 0, yy / qrH, 0, 0]) drawing.add(qr) renderPDF.draw(drawing, p, centerX - xx / 2, 0.1 * inch + centerY - yy / 2) p.setFont("Helvetica", 16) p.drawCentredString(centerX, centerY - 0.55 * inch, "L%04d" % loc_pk) p.showPage() p.save() return response
def create_card_download(request): filename = "member_card_%s.pdf" % request.user.username # Create the HttpResponse object with the appropriate PDF headers. response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'attachment; filename="%s"' % filename member = request.user.member b64 = member.generate_member_card_str() # Produce PDF using ReportLab: p = canvas.Canvas(response, pagesize=letter) pageW, _ = letter # Business card size is 2" x 3" # Credit card size is 2.2125" x 3.370" card_width = 2.125*inch card_height = 3.370*inch card_corner_r = 3.0*mm refX = pageW/2.0 refY = 7.25*inch # Some text to place near the top of the page. p.setFont("Helvetica", 16) p.drawCentredString(refX, refY+3.00*inch, 'This is your new Xerocraft membership card.') p.drawCentredString(refX, refY+2.75*inch, 'Always bring it with you when you visit Xerocraft.') p.drawCentredString(refX, refY+2.50*inch, 'The rectangle is credit card sized, if you would like to cut it out.') p.drawCentredString(refX, refY+2.25*inch, 'If you have any older cards, they have been deactivated.') # Changing refY allows the following to be moved up/down as a group, w.r.t. the text above. refY -= 0.3*inch # Most of the wallet size card: p.roundRect(refX-card_width/2, refY-1.34*inch, card_width, card_height, card_corner_r) p.setFont("Helvetica", 21) p.drawCentredString(refX, refY-0.3*inch, 'XEROCRAFT') p.setFontSize(16) p.drawCentredString(refX, refY-0.65*inch, member.first_name) p.drawCentredString(refX, refY-0.85*inch, member.last_name) p.setFontSize(12) p.drawCentredString(refX, refY-1.2 *inch, date.today().isoformat()) # QR Code: qr = QrCodeWidget(b64) qrSide = 2.3*inch # REVIEW: This isn't actually 2.3 inches. What is it? bounds = qr.getBounds() qrW = bounds[2] - bounds[0] qrH = bounds[3] - bounds[1] drawing = Drawing(1000, 1000, transform=[qrSide/qrW, 0, 0, qrSide/qrH, 0, 0]) drawing.add(qr) renderPDF.draw(drawing, p, refX-qrSide/2, refY-0.19*inch) p.showPage() p.save() return response
def generate_qr(self, text): pass qr_code = QrCodeWidget(text, barLevel='M') bounds = qr_code.getBounds() width = bounds[2] - bounds[0] height = bounds[3] - bounds[1] self.qr_draw = Drawing( 20, 20, transform=[40. / width, 0, 0, 40. / height, 0, 0]) self.qr_draw.add(qr_code)
def draw_qr(c, text, x0, y0, w, h): """Draws a single QR code. """ q = QrCodeWidget(text) b = q.getBounds() d = Drawing(w, h, transform=[w / (b[2] - b[0]), 0, 0, h / (b[3] - b[1]), 0, 0]) d.add(q) renderPDF.draw(d, c, x0, y0)
def create_qr_code(text): qrw = QrCodeWidget(text) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(45, 45, transform=[90. / w, 0, 0, 90. / h, 0, 0]) d.add(qrw) return d
def draw(self): # here standard and documented QrCodeWidget usage on # Flowable canva qr_code = QrCodeWidget(self.qr_value) bounds = qr_code.getBounds() qr_width = (bounds[2] - bounds[0]) qr_height = (bounds[3] - bounds[1]) w = float(self.width) d = Drawing(w, w, transform=[w/qr_width, 0, 0, w/qr_height, 0, 0]) d.add(qr_code) renderPDF.draw(d, self.canv, 0, 0)
def draw_qr(c, text, x0, y0, w, h): """Draws a single QR code. """ q = QrCodeWidget(text) b = q.getBounds() d = Drawing(w, h, transform=[ w / (b[2] - b[0]), 0, 0, h / (b[3] - b[1]), 0, 0 ]) d.add(q) renderPDF.draw(d, c, x0, y0)
def qr_code_drawing(text_value, name): qrw = QrCodeWidget(text_value) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(120, 120, transform=[120. / w, 0, 0, 120. / h, 0, 0]) d.add(qrw) dir = settings.BASE_DIR d.save(formats=['png'], outDir=os.path.join(dir, 'static/barcode'), fnRoot=str(name))
def draw(self): # here standard and documented QrCodeWidget usage on # Flowable canva qr_code = QrCodeWidget(self.qr_value, barBorder=self.border, y=self.border) bounds = qr_code.getBounds() qr_width = (bounds[2] - bounds[0]) qr_height = (bounds[3] - bounds[1]) _width = float(self.width) drawing = Drawing( _width, _width, transform=[_width / qr_width, 0, 0, _width / qr_height, 0, 0]) drawing.add(qr_code) renderPDF.draw(drawing, self.canv, 0, 0)
def draw_qr_code(c, x, y, qr_data): # QR code qr_code = QrCodeWidget(qr_data) bounds = qr_code.getBounds() qr_width = bounds[2] - bounds[0] qr_height = bounds[3] - bounds[1] # 180 = new height and width d = Drawing(180, 180, transform=[180. / qr_width, 0, 0, 180. / qr_height, 0, 0]) d.add(qr_code) # 22 = qr code border width renderPDF.draw(d, c, x - 22, y)
def add_qr_code(self, x, y, text): """ Metodo utilizado para crear un codigo QR dentro del pdf """ pdf_canvas = self.__get_object_pdf_canvas() # codigo QR qrw = QrCodeWidget(text) bounds = qrw.getBounds() w = bounds[2] - bounds[0] h = bounds[3] - bounds[1] d = Drawing(45, 45, transform=[140. / w, 0, 0, 140. / h, x, y]) d.add(qrw) renderPDF.draw(d, pdf_canvas, 1, 1) return self
def _draw_barcodearea(self, canvas: Canvas, op: OrderPosition, o: dict): content = o.get('content', 'secret') if content == 'secret': content = op.secret elif content == 'pseudonymization_id': content = op.pseudonymization_id level = 'H' if len(content) > 32: level = 'M' if len(content) > 128: level = 'L' reqs = float(o['size']) * mm kwargs = {} if o.get('nowhitespace', False): kwargs['barBorder'] = 0 qrw = QrCodeWidget(content, barLevel=level, barHeight=reqs, barWidth=reqs, **kwargs) d = Drawing(reqs, reqs) d.add(qrw) qr_x = float(o['left']) * mm qr_y = float(o['bottom']) * mm renderPDF.draw(d, canvas, qr_x, qr_y)
def print_poster_A4(request, qr_id): qrcode = QRcode.objects.get(pk=int(qr_id)) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename="posterA4-%s.pdf"; size=A4' % (str(qrcode.room.room_number)) p = canvas.Canvas(response) p.drawImage('/home/cgaspoz/Dev/voices/static/templates/talk_to_us_A4.jpg', 0, 0, width=210*mm, height=297*mm) qr_size = 90.5*mm qr_x = 60*mm qr_y = 63*mm qrw = QrCodeWidget(settings.HTTP_URL + "qr/" + str(qrcode.qr) + "/") qrw.barHeight = qr_size qrw.barWidth = qr_size qrw.barLevel = 'Q' # M, L, H, Q qrw.barBorder = 0 d = Drawing(qr_size, qr_size) d.add(qrw) d.add(Rect(5.6*mm, 5.6*mm, 8*mm, 8*mm, strokeColor=colors.CMYKColor(1, 0, 0, 0), fillColor=colors.CMYKColor(1, 0, 0, 0))) d.add(Rect(76.9*mm, 76.9*mm, 8*mm, 8*mm, strokeColor=colors.CMYKColor(1, 0, 0, 0), fillColor=colors.CMYKColor(1, 0, 0, 0))) d.add(Rect(5.6*mm, 76.9*mm, 8*mm, 8*mm, strokeColor=colors.CMYKColor(1, 0, 0, 0), fillColor=colors.CMYKColor(1, 0, 0, 0))) renderPDF.draw(d, p, qr_x, qr_y) p.showPage() text = p.beginText() text.setTextOrigin(12*mm,277*mm) text.setFillGray(0.5) text.setFont("Helvetica", 10) text.textLines(''' Talk to us! @ HE-Arc Campus: %s Building: %s Floor: %s Room: %s-%s QR-Code: %s''' % (qrcode.room.floor.building.campus.name, qrcode.room.floor.building.name, qrcode.room.floor.floor_display, qrcode.room.room_number, qrcode.room.room_name, qrcode.qr)) p.drawText(text) p.showPage() p.save() return response
def draw_qr_data(canvas, data, size, position): qr = QrCodeWidget(data) qr_draw = Drawing( size, size, transform=[size / qr.barWidth, 0, 0, size / qr.barHeight, 0, 0]) qr_draw.add(qr) renderPDF.draw(qr_draw, canvas, position[0], position[1])
def _draw_barcodearea(self, canvas: Canvas, op: OrderPosition, o: dict): reqs = float(o['size']) * mm qrw = QrCodeWidget(op.secret, barLevel='H', barHeight=reqs, barWidth=reqs) d = Drawing(reqs, reqs) d.add(qrw) qr_x = float(o['left']) * mm qr_y = float(o['bottom']) * mm renderPDF.draw(d, canvas, qr_x, qr_y)
def print_qr(data): """ This will create PDF with QR images on a 2x2 inch size in an A4 paper. """ filename = get_unique_filename() filename = "qrcoder." + filename + ".pdf" PDF_FILE = PDF_FILE + filename pdf = canvas.Canvas(PDF_FILE) qr_code = QrCodeWidget(data) b = qr_code.getBounds() width = b[2]-b[0] height = b[3]-b[1] # For 2x2 inch size layout on A4 col1 = ['col1a', 'col1b', 'col1c', 'col1d'] col2 = ['col2a', 'col2b', 'col2c', 'col2d'] col3 = ['col3a', 'col3b', 'col3c', 'col3d'] pos1 = ['1, 1', '0, 215', '0, 430', '0, 645'] pos2 = ['205, 1', '205, 215', '205, 430', '205, 645'] pos3 = ['405, 1', '405, 215', '405, 430', '405, 645'] im_size = Drawing(200,200,transform = [200./width,0,0,200./height,0,0]) for items in col1: items = im_size items.add(qr_code) for pos in pos1: renderPDF.draw(items, pdf, int(pos.split(",")[0]), int(pos.split(",")[1])) for items in col2: items = im_size items.add(qr_code) for pos in pos2: renderPDF.draw(items, pdf, int(pos.split(",")[0]), int(pos.split(",")[1])) for items in col3: items = im_size items.add(qr_code) for pos in pos3: renderPDF.draw(items, pdf, int(pos.split(",")[0]), int(pos.split(",")[1])) pdf.showPage() pdf.save() return filename
def get_qrcode_as_svg_zipstring(code_value): logging.info("get_qrcode_as_svg_string") unit = 29*mm qrw = QrCodeWidget(code_value) b = qrw.getBounds() logging.info( b ) w = b[2]-b[0] h = b[3]-b[1] qrcode_image = Drawing(unit,unit,transform=[unit/w,0,0,unit/h,0,0]) qrcode_image.add(qrw) rs = renderSVG.drawToString(qrcode_image) logging.info("raw size %d" % len(rs)) #rsz = zlib.compress(rs) #logging.info("zip size %d" % len(rsz)) return rs
def create_qrcode(value, size=50): d = Drawing(size, size) qr = QrCodeWidget(value=value, barWidth=size, barHeight=size) d.add(qr) return Image( value=renderPM.drawToString(d, fmt="png"), format='png', width=size, height=size, )
def sai(response): response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"' p = canvas.Canvas(response) qrw = QrCodeWidget('Helo World!') b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(45, 45, transform=[45. / w, 0, 0, 45. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, p, 1, 1) p.showPage() p.save() return response
def get_overlay_canvas() -> io.BytesIO: global zipcode zipcode = str(zipcode) data = io.BytesIO() pdf = canvas.Canvas(data) pdf.drawString(x=92, y=702, text=firstname + ' ' + lastname) pdf.drawString(x=92, y=684, text=birthday) pdf.drawString(x=214, y=684, text=placeofbirth) pdf.drawString(x=104, y=665, text=address + ' ' + zipcode + ' ' + city) pdf.drawString(x=47, y=dic_reason[reason], text='X') pdf.drawString(x=78, y=76, text=ccity) pdf.drawString(x=63, y=58, text=date) pdf.drawString(x=227, y=58, text=hour) #QRCode Zone text_QrCode="Cree le: "+date+" a "+hourh+";\n"\ " Nom: "+lastname+";\n"\ " Prenom: "+firstname+";\n"\ " Naissance: "+birthday+" a "+placeofbirth+";\n"\ " Adresse: "+address+" "+zipcode+" "+city+";\n"\ " Sortie: "+date+" a "+hour+";\n"\ " Motifs: "+reason qrw = QrCodeWidget(text_QrCode) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(92, 92, transform=[100. / w, 0, 0, 100. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, pdf, 435, 25) pdf.showPage() d = Drawing(300, 300, transform=[340. / w, 0, 0, 340. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, pdf, 50, 450) pdf.save() data.seek(0) return data
def create_overlay(ass, certificate): month_names = [ "", "Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec" ] register_fonts() c = canvas.Canvas('temp_overlay.pdf', pagesize=landscape(A4)) c.setFillColorRGB(0, 0, 0) c.setFont("Montserrat", 25) c.drawCentredString(11 * cm, 12 * cm, f'{ass.person.first_name} {ass.person.last_name}') c.setFont("Montserrat", 17) c.drawString( 22 * cm, 8 * cm, f'{month_names[ass.finished_date_time.month]} {str(ass.finished_date_time.day).zfill(2)}, {ass.finished_date_time.year}' ) c.drawString(22 * cm, 7 * cm, f'{ass.total_score()}%') c.setFont("Montserrat", 25) c.setFillColorRGB(0.29, 0.37, 0.81) c.drawCentredString(11 * cm, 9 * cm, f'{ass.quiz_structure.name}') qrw = QrCodeWidget( f'https://cert.dsacademy.kz/media/{certificate.permanent_link}') b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] size = 170 d = Drawing(1, 1, transform=[size / w, 0, 0, size / h, 0, 0]) d.add(qrw) renderPDF.draw(d, c, 27.3 * cm - size, 15 * cm - size) c.save()
def PreencheFolhaOcorrencia(myCanvas, disciplina): margin = 2 * cm marginleft = margin margintop = height - 1.1 * margin myCanvas.setFont('Helvetica-Bold', 12) myCanvas.drawString(marginleft + 1.1 * cm, 25.4 * cm, disciplina.nomePolo) myCanvas.drawString(marginleft + 11.6 * cm, 25.4 * cm, disciplina.data) # Coloca QR-Code no canto superior direito codigo = disciplina.dataStr + '-' + disciplina.polo + '-ocorrencia' qrw = QrCodeWidget(codigo) qrsize = 100.0 b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(qrsize, qrsize, transform=[qrsize/w, 0, 0, qrsize/h, 0, 0]) d.add(qrw) renderPDF.draw(d, myCanvas, 16 * cm, margintop - h + 28) return
def draw_labels(self, p, index, item, ct): pos = self.coords[index] qrw = QrCodeWidget( settings.LABEL_DISPATCHER_URL + base64.urlsafe_b64encode(uuid.UUID(item.uuid).bytes).rstrip('='), barBorder=0, barWidth=16 * mm, barHeight=16 * mm) width, height = A4 d = Drawing(32, 32) d.add(qrw) renderPDF.draw(d, p, pos[0] * mm + 2 * mm, height - pos[1] * mm + 1 * mm - self.dimension[1] * mm)
def qrtest(): logging.info("qrtest ================ START ================= qrtest") unit = 29*mm qrw = QrCodeWidget(EXTRA_LONG_TEST_TEST) b = qrw.getBounds() logging.info( b ) w = b[2]-b[0] h = b[3]-b[1] qrcode_image = Drawing(unit,unit,transform=[unit/w,0,0,unit/h,0,0]) qrcode_image.add(qrw) rs = renderSVG.drawToString(qrcode_image) logging.info(len(rs)) rsz = zlib.compress(rs) logging.info(len(rsz)) logging.info("qrtest ================ END ================= qrtest")
def _draw_barcodearea(self, canvas: Canvas, op: OrderPosition, o: dict): content = o.get('content', 'secret') if content == 'secret': content = op.secret elif content == 'pseudonymization_id': content = op.pseudonymization_id reqs = float(o['size']) * mm qrw = QrCodeWidget(content, barLevel='H', barHeight=reqs, barWidth=reqs) d = Drawing(reqs, reqs) d.add(qrw) qr_x = float(o['left']) * mm qr_y = float(o['bottom']) * mm renderPDF.draw(d, canvas, qr_x, qr_y)
def addPageNumber(canvas, doc): """ Add the page number """ print doc.contract now = datetime.datetime.now(pytz.timezone('Asia/Kolkata')) passKey = '%s%s' % (str(doc.request.user.date_joined.year), doc.request.user.pk) # also the user ID docID = '%s%s%s' % (doc.contract.deal.pk, now.year, doc.contract.pk) qrw = QrCodeWidget( 'http://cioc.co.in/documents?id=%s&passkey=%s&app=crmInvoice' % (docID, passKey)) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(60, 60, transform=[60. / w, 0, 0, 60. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, canvas, 180 * mm, 270 * mm) pass
def _draw_qr(self, canvas, doc): canvas.saveState() qrw = QrCodeWidget(urljoin( settings.SITE_URL, reverse('job.detail', kwargs={'pk': self.obj.pk})), barHeight=20 * mm, barWidth=20 * mm) d = Drawing(20 * mm, 20 * mm) d.add(qrw) qr_x = 175 * mm qr_y = 2.2 * mm renderPDF.draw(d, canvas, qr_x, qr_y) canvas.restoreState()
def _draw_barcodearea(self, canvas: Canvas, o: dict, row: dict): content = row.get("qrcode", "Missing qrcode column") level = 'H' if len(content) > 32: level = 'M' if len(content) > 128: level = 'L' reqs = float(o['size']) * mm qrw = QrCodeWidget(content, barLevel=level, barHeight=reqs, barWidth=reqs) d = Drawing(reqs, reqs) d.add(qrw) qr_x = float(o['left']) * mm qr_y = float(o['bottom']) * mm renderPDF.draw(d, canvas, qr_x, qr_y)
def draw_labels(self, p, index, item, ct): pos = self.coords[index] qrw = QrCodeWidget( settings.LABEL_DISPATCHER_URL + base64.urlsafe_b64encode(uuid.UUID(item.uuid).bytes).rstrip('='), barBorder=0, barWidth=12 * mm, barHeight=12 * mm) width, height = A4 corrected_height = height - pos[1] * mm + 1 * mm - self.dimension[ 1] * mm d = Drawing(self.dimension[0] * mm, self.dimension[1] * mm) d.add(qrw) # unique name # type/location/besitzer textobject = p.beginText() textobject.setTextOrigin(pos[0] * mm + 17 * mm, corrected_height + self.dimension[1] * mm - 9) textobject.setFont("Helvetica", 9) if ct == 11: text = u'%s Type: %s; Loc: %s; Pers: %s' % ( item.unique_name, u' -> '.join([ unicode(x) for x in item.type.get_ancestors(include_self=True) ]), u' -> '.join([ unicode(x) for x in item.location.get_ancestors(include_self=True) ]), u', '.join( [unicode(x.nickname) for x in item.persons.all()])) elif ct == 8: text = u'%s; %s; In: %s' % ( item.name, item.description_short, u' -> '.join( [unicode(x) for x in item.get_ancestors()])) else: pass textobject.textLines(textwrap.wrap(text, 30)) p.drawText(textobject) # p.rect(pos[0]*mm, corrected_height, self.dimension[0]*mm, self.dimension[1]*mm, fill=0, stroke=1) renderPDF.draw(d, p, pos[0] * mm + 4 * mm, corrected_height + 6 * mm)
def download_pdf(modeladmin, request, queryset): if request.user.is_authenticated: response = HttpResponse(content_type="application/pdf") response[ "Content-Disposition"] = "attachment; filename=group_qr_codes.pdf" p = canvas.Canvas(response) users = queryset # User.objects.filter(group__id=pk) per_page = 6 x_offset = 0 y_offset = 0 step = 130 margin = 50 for i, user in enumerate(users): qrw = QrCodeWidget(user.code) d = Drawing(50, 50) d.add(qrw) renderPDF.draw(d, p, margin + x_offset, margin + y_offset) p.drawString(margin + x_offset, margin + y_offset - 10, user.name) y_offset += step if i % per_page == per_page - 1: x_offset += step + 60 y_offset = 0 if i % (per_page * 3) == (per_page * 3) - 1: p.showPage() x_offset = 0 y_offset = 0 p.save() return response else: return HttpResponse("Unauthorized", status=403)
def append_to_pdf(self, story): system_wlan_ssid = config["system_wlan_ssid"] or "-" system_wlan_password = config["system_wlan_password"] or "-" system_wlan_encryption = config["system_wlan_encryption"] or "-" system_url = config["system_url"] or "-" participant_pdf_welcometitle = config["participant_pdf_welcometitle"] participant_pdf_welcometext = config["participant_pdf_welcometext"] if config['participant_sort_users_by_first_name']: sort = 'first_name' else: sort = 'last_name' qrcode_size = 2 * cm # qrcode for system url qrcode_url = QrCodeWidget(system_url) qrcode_url.barHeight = qrcode_size qrcode_url.barWidth = qrcode_size qrcode_url.barBorder = 0 qrcode_url_draw = Drawing(45, 45) qrcode_url_draw.add(qrcode_url) # qrcode for wlan text = "WIFI:S:%s;T:%s;P:%s;;" % (system_wlan_ssid, system_wlan_encryption, system_wlan_password) qrcode_wlan = QrCodeWidget(text) qrcode_wlan.barHeight = qrcode_size qrcode_wlan.barWidth = qrcode_size qrcode_wlan.barBorder = 0 qrcode_wlan_draw = Drawing(45, 45) qrcode_wlan_draw.add(qrcode_wlan) for user in User.objects.all().order_by(sort): story.append(Paragraph(unicode(user), stylesheet['h1'])) story.append(Spacer(0, 1 * cm)) data = [] # WLAN access data cell = [] cell.append(Paragraph(_("WLAN access data"), stylesheet['h2'])) cell.append(Paragraph("%s:" % _("WLAN name (SSID)"), stylesheet['formfield'])) cell.append(Paragraph(system_wlan_ssid, stylesheet['formfield_value'])) cell.append(Paragraph("%s:" % _("WLAN password"), stylesheet['formfield'])) cell.append(Paragraph(system_wlan_password, stylesheet['formfield_value'])) cell.append(Paragraph("%s:" % _("WLAN encryption"), stylesheet['formfield'])) cell.append(Paragraph(system_wlan_encryption, stylesheet['formfield_value'])) cell.append(Spacer(0, 0.5 * cm)) # OpenSlides access data cell2 = [] cell2.append(Paragraph(_("OpenSlides access data"), stylesheet['h2'])) cell2.append(Paragraph("%s:" % _("Username"), stylesheet['formfield'])) cell2.append(Paragraph(user.username, stylesheet['formfield_value'])) cell2.append(Paragraph("%s:" % _("Password"), stylesheet['formfield'])) cell2.append(Paragraph(user.default_password, stylesheet['formfield_value'])) cell2.append(Paragraph("URL:", stylesheet['formfield'])) cell2.append(Paragraph(system_url, stylesheet['formfield_value'])) data.append([cell, cell2]) # QRCodes cell = [] if system_wlan_ssid != "-" and system_wlan_encryption != "-": cell.append(qrcode_wlan_draw) cell.append(Paragraph(_("Scan this QRCode to connect WLAN."), stylesheet['qrcode_comment'])) cell2 = [] if system_url != "-": cell2.append(qrcode_url_draw) cell2.append(Paragraph(_("Scan this QRCode to open URL."), stylesheet['qrcode_comment'])) data.append([cell, cell2]) # build table table = Table(data) table._argW[0] = 8 * cm table._argW[1] = 8 * cm table.setStyle(TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')])) story.append(table) story.append(Spacer(0, 2 * cm)) # welcome title and text story.append(Paragraph(participant_pdf_welcometitle, stylesheet['h2'])) story.append(Paragraph(participant_pdf_welcometext.replace('\r\n', '<br/>'), stylesheet['Paragraph12'])) story.append(PageBreak())
def generate(self, order): from reportlab.graphics.shapes import Drawing from reportlab.pdfgen import canvas from reportlab.lib import pagesizes, units from reportlab.graphics.barcode.qr import QrCodeWidget from reportlab.graphics import renderPDF from PyPDF2 import PdfFileWriter, PdfFileReader pagesize = self.settings.get('pagesize', default='A4') if hasattr(pagesizes, pagesize): pagesize = getattr(pagesizes, pagesize) else: pagesize = pagesizes.A4 orientation = self.settings.get('orientation', default='portrait') if hasattr(pagesizes, orientation): pagesize = getattr(pagesizes, orientation)(pagesize) buffer = BytesIO() p = canvas.Canvas(buffer, pagesize=pagesize) for op in order.positions.all().select_related('item', 'variation'): event_s = self.settings.get('event_s', default=22, as_type=float) if event_s: p.setFont("Helvetica", event_s) event_x = self.settings.get('event_x', default=15, as_type=float) event_y = self.settings.get('event_y', default=235, as_type=float) p.drawString(event_x * units.mm, event_y * units.mm, str(self.event.name)) name_s = self.settings.get('name_s', default=17, as_type=float) if name_s: p.setFont("Helvetica", name_s) name_x = self.settings.get('name_x', default=15, as_type=float) name_y = self.settings.get('name_y', default=220, as_type=float) item = str(op.item.name) if op.variation: item += " – " + str(op.variation) p.drawString(name_x * units.mm, name_y * units.mm, item) price_s = self.settings.get('price_s', default=17, as_type=float) if price_s: p.setFont("Helvetica", price_s) price_x = self.settings.get('price_x', default=15, as_type=float) price_y = self.settings.get('price_y', default=210, as_type=float) p.drawString(price_x * units.mm, price_y * units.mm, "%s %s" % (str(op.price), self.event.currency)) qr_s = self.settings.get('qr_s', default=80, as_type=float) if qr_s: reqs = qr_s * units.mm qrw = QrCodeWidget(op.id, barLevel='H') b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(reqs, reqs, transform=[reqs / w, 0, 0, reqs / h, 0, 0]) d.add(qrw) qr_x = self.settings.get('qr_x', default=10, as_type=float) qr_y = self.settings.get('qr_y', default=130, as_type=float) renderPDF.draw(d, p, qr_x * units.mm, qr_y * units.mm) code_s = self.settings.get('code_s', default=11, as_type=float) if code_s: p.setFont("Helvetica", code_s) code_x = self.settings.get('code_x', default=15, as_type=float) code_y = self.settings.get('code_y', default=130, as_type=float) p.drawString(code_x * units.mm, code_y * units.mm, op.id) p.showPage() p.save() buffer.seek(0) new_pdf = PdfFileReader(buffer) output = PdfFileWriter() bg_file = self.settings.get('background', as_type=File) if isinstance(bg_file, File): bgf = default_storage.open(bg_file.name, "rb") else: bgf = open(finders.find('pretixpresale/pdf/ticket_default_a4.pdf'), "rb") bg_pdf = PdfFileReader(bgf) for page in new_pdf.pages: bg_page = copy.copy(bg_pdf.getPage(0)) bg_page.mergePage(page) output.addPage(bg_page) outbuffer = BytesIO() output.write(outbuffer) outbuffer.seek(0) return 'order%s%s.pdf' % (self.event.slug, order.code), 'application/pdf', outbuffer.read()
def add_QRcode(request): # add a new set of QRcode, each QR is one sample. # date and time is also included in this QRcode. response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'attachment; filename="QRcodes.pdf"' #this is not a real QRList, just storing all text information for QRcode generation. QRList = [] time = datetime.now().strftime("%I:%M%p on %B %d, %Y") for index in range(3182, 3198): # make a list of MICU, each element is either a sink or pTrap, # the time of QRcode generation was also included. dict = [time, 'MICU', str(index)] dict1 = dict+['sink'] QRList.append(dict1) dict2 = dict+['pTrap'] QRList.append(dict2) for index in range(5185, 5199): # make a list for SICU. dict = [time, 'SICU', str(index)] dict1 = dict+['sink'] QRList.append(dict1) dict2 = dict+['pTrap'] QRList.append(dict2) '''Generates book labels using the barcodes passed in. Each code should be an integer, and will be printed using 9 digits (padded with zeroes if necessary). Up to 30 labels will be generated per page for compatibility with Avery form 5160/8160 or most other address label forms containing 30 per sheet. The text of a PDF document is returned (to be sent back to the browser).''' #using reportlab library, produce a canvas like pdf for drawing. pdf = Canvas(response, pagesize=letter) pdf.setFillColorRGB(0, 0, 0) # These 2 initial value was originally from labelgen.py from google code, # The value has been changed due to the use of Avery5160 # The original value was 45 and 71. imgX = startX = 25 imgY = startY = letter[1] - 101 for singleQRCode in QRList: if imgX > 600: # Start a new page imgX = startX imgY = startY pdf.showPage() # Generate and draw the barcode curDate = singleQRCode[0] curUnit = singleQRCode[1] curRoom = singleQRCode[2] curLocation = singleQRCode[3] text = curDate+','+curUnit+','+curRoom+','+curLocation # QRPureImg is just the QRcode, not on canvas yet, # QRImage is canvas produced by reportlab QRPureImg = QrCodeWidget(text) bounds = QRPureImg.getBounds() width = bounds[2] - bounds[0] height = bounds[3] - bounds[1] QRImage = Drawing(45, 45, transform=[45. / width, 0, 0, 45. / height, 0, 0]) QRImage.add(QRPureImg) renderPDF.draw(QRImage, pdf, imgX, imgY) #add text label for QRcode, the original value was for barcode, which his here # pdf.setFont("Courier", 12) # pdf.drawCentredString(imgX + 64.5, imgY - 10, txt) # pdf.setFont("Courier", 10) # pdf.drawCentredString(imgX + 64.5, imgY - 20, res['title'].upper()[:20].strip()) pdf.setFont("Courier", 6) pdf.drawString(imgX + 60, imgY + 35, curDate) pdf.setFont("Courier", 12) pdf.drawString(imgX + 60, imgY + 20, curUnit+' '+curRoom) pdf.setFont("Courier", 12) pdf.drawString(imgX + 60, imgY + 5, curLocation) imgY -= 71 # Move down to the next label location if imgY < 50: # Start a new column imgY = startY imgX += 200 pdf.showPage() pdf.save() return response
import rospkg rospack = rospkg.RosPack() path = rospack.get_path('ed_object_models') + "/models" # Create page p = canvas.Canvas(path + "/qr_codes.pdf") for model_name in os.listdir(path): # Only visible dirs if model_name[0] == ".": continue # Generate qr code qrw = QrCodeWidget(model_name) b = qrw.getBounds() w=b[2]-b[0] h=b[3]-b[1] d = Drawing(1,1,transform=[5,0,0,5,0,0]) d.rotate(90) d.translate(0,-90) d.add(qrw) # Generate the rectangle r = Rect(1,1,1,1) renderPDF.draw(d, p, 0, 0) #renderPDF.draw(r, p, 0, 0)
def generate(self, request, order): from reportlab.graphics.shapes import Drawing from reportlab.pdfgen import canvas from reportlab.lib import pagesizes, units from reportlab.graphics.barcode.qr import QrCodeWidget from reportlab.graphics import renderPDF from PyPDF2 import PdfFileWriter, PdfFileReader response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'inline; filename="order%s%s.pdf"' % (request.event.slug, order.code) pagesize = request.event.settings.get('ticketpdf_pagesize', default='A4') if hasattr(pagesizes, pagesize): pagesize = getattr(pagesizes, pagesize) else: pagesize = pagesizes.A4 defaultfname = finders.find('pretixpresale/pdf/ticket_default_a4.pdf') fname = request.event.settings.get('ticketpdf_background', default=defaultfname) # TODO: Handle file objects buffer = BytesIO() p = canvas.Canvas(buffer, pagesize=pagesize) for op in order.positions.all().select_related('item', 'variation'): p.setFont("Helvetica", 22) p.drawString(15 * units.mm, 235 * units.mm, str(request.event.name)) p.setFont("Helvetica", 17) item = str(op.item.name) if op.variation: item += " – " + str(op.variation) p.drawString(15 * units.mm, 220 * units.mm, item) p.setFont("Helvetica", 17) p.drawString(15 * units.mm, 210 * units.mm, "%s %s" % (str(op.price), request.event.currency)) reqs = 80 * units.mm qrw = QrCodeWidget(op.identity, barLevel='H') b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(reqs, reqs, transform=[reqs / w, 0, 0, reqs / h, 0, 0]) d.add(qrw) renderPDF.draw(d, p, 10 * units.mm, 130 * units.mm) p.setFont("Helvetica", 11) p.drawString(15 * units.mm, 130 * units.mm, op.identity) p.showPage() p.save() buffer.seek(0) new_pdf = PdfFileReader(buffer) output = PdfFileWriter() for page in new_pdf.pages: bg_pdf = PdfFileReader(open(fname, "rb")) bg_page = bg_pdf.getPage(0) bg_page.mergePage(page) output.addPage(bg_page) output.write(response) return response
def run(): styles = getSampleStyleSheet() styleN = styles['Normal'] styleH = styles['Heading1'] story = [] storyAdd = story.append #for codeNames in code storyAdd(Paragraph('I2of5', styleN)) storyAdd(I2of5(1234, barWidth=inch * 0.02, checksum=0)) storyAdd(Paragraph('MSI', styleN)) storyAdd(MSI(1234)) storyAdd(Paragraph('Codabar', styleN)) storyAdd(Codabar("A012345B", barWidth=inch * 0.02)) storyAdd(Paragraph('Code 11', styleN)) storyAdd(Code11("01234545634563")) storyAdd(Paragraph('Code 39', styleN)) storyAdd(Standard39("A012345B%R")) storyAdd(Paragraph('Extended Code 39', styleN)) storyAdd(Extended39("A012345B}")) storyAdd(Paragraph('Code93', styleN)) storyAdd(Standard93("CODE 93")) storyAdd(Paragraph('Extended Code93', styleN)) storyAdd(Extended93("L@@K! Code 93 :-)")) #, barWidth=0.005 * inch)) storyAdd(Paragraph('Code 128', styleN)) storyAdd(Code128("AB-12345678")) storyAdd(Paragraph('Code 128 Auto', styleN)) storyAdd(Code128Auto("AB-12345678")) storyAdd(Paragraph('USPS FIM', styleN)) storyAdd(FIM("A")) storyAdd(Paragraph('USPS POSTNET', styleN)) storyAdd(POSTNET('78247-1043')) storyAdd(Paragraph('USPS 4 State', styleN)) storyAdd(USPS_4State('01234567094987654321', '01234567891')) from reportlab.graphics.barcode import createBarcodeDrawing storyAdd(Paragraph('EAN13', styleN)) storyAdd(createBarcodeDrawing('EAN13', value='123456789012')) storyAdd(Paragraph('EAN13 quiet=False', styleN)) storyAdd(createBarcodeDrawing('EAN13', value='123456789012', quiet=False)) storyAdd(Paragraph('EAN8', styleN)) storyAdd(createBarcodeDrawing('EAN8', value='1234567')) storyAdd(PageBreak()) storyAdd(Paragraph('EAN5 price=True', styleN)) storyAdd(createBarcodeDrawing('EAN5', value='11299', price=True)) storyAdd(Paragraph('EAN5 price=True quiet=False', styleN)) storyAdd( createBarcodeDrawing('EAN5', value='11299', price=True, quiet=False)) storyAdd(Paragraph('EAN5 price=False', styleN)) storyAdd(createBarcodeDrawing('EAN5', value='11299', price=False)) storyAdd(Paragraph('ISBN alone', styleN)) storyAdd(createBarcodeDrawing('ISBN', value='9781565924796')) storyAdd(Paragraph('ISBN with ean5 price', styleN)) storyAdd(createBarcodeDrawing('ISBN', value='9781565924796', price='01299')) storyAdd(Paragraph('ISBN with ean5 price, quiet=False', styleN)) storyAdd( createBarcodeDrawing('ISBN', value='9781565924796', price='01299', quiet=False)) storyAdd(Paragraph('UPCA', styleN)) storyAdd(createBarcodeDrawing('UPCA', value='03600029145')) storyAdd(Paragraph('USPS_4State', styleN)) storyAdd( createBarcodeDrawing('USPS_4State', value='01234567094987654321', routing='01234567891')) storyAdd(Paragraph('QR', styleN)) storyAdd(createBarcodeDrawing('QR', value='01234567094987654321')) storyAdd(Paragraph('QR', styleN)) storyAdd( createBarcodeDrawing('QR', value='01234567094987654321', x=30, y=50)) storyAdd(Paragraph('QR in drawing at (0,0)', styleN)) d = Drawing(100, 100) d.add( Rect(0, 0, 100, 100, strokeWidth=1, strokeColor=colors.red, fillColor=None)) d.add(QrCodeWidget(value='01234567094987654321')) storyAdd(d) storyAdd(Paragraph('QR in drawing at (10,10)', styleN)) d = Drawing(100, 100) d.add( Rect(0, 0, 100, 100, strokeWidth=1, strokeColor=colors.red, fillColor=None)) d.add(Line(7.5, 10, 12.5, 10, strokeWidth=0.5, strokeColor=colors.blue)) d.add(Line(10, 7.5, 10, 12.5, strokeWidth=0.5, strokeColor=colors.blue)) d.add(QrCodeWidget(value='01234567094987654321', x=10, y=10)) storyAdd(d) storyAdd(Paragraph('Label Size', styleN)) storyAdd(XBox((2.0 + 5.0 / 8.0) * inch, 1 * inch, '1x2-5/8"')) storyAdd(Paragraph('Label Size', styleN)) storyAdd(XBox((1.75) * inch, .5 * inch, '1/2x1-3/4"')) SimpleDocTemplate('out.pdf').build(story) print('saved out.pdf')
def reporte_peso_neto(self): today = datetime.now() response = HttpResponse(content_type='application/pdf') # se crea el nombre del archivo de la descarga pdf pdf_name = 'peso_neto_{}.pdf'.format(today.strftime("%Y%m%d")) response['Content-Disposition'] = 'inline; filename={}'.format( pdf_name) # se crea el buffer de memoria para generar el documento buffer = BytesIO() pdftam = (8 * cm, 21 * cm) pdf = canvas.Canvas(buffer, pagesize=pdftam) pdf.setFont('Helvetica-Bold', 12) pdf.drawCentredString(115, 575, "BOLETA DE PESAJE") pdf.line(55, 573, 175, 573) pdf.setFont('Helvetica-Bold', 10) pdf.drawString(5, 545, "=====================================") pdf.drawString(5, 425, "=====================================") pdf.setFont('Helvetica-Bold', 10) pdf.drawRightString(175, 560, self.__carga.numero) pdf.setFont('Helvetica-Bold', 12) pdf.drawRightString(218, 365, self.__carga.numero) pdf.drawRightString(218, 160, self.__carga.numero) pdf.setFont('Helvetica', 6) pdf.drawString(15, 420, self.__carga.usuario.username) pdf.drawRightString(215, 420, today.strftime("%H:%M:%S")) pdf.setFont('Helvetica', 7) pdf.drawString(55, 560, "Nº PESAJE:") pdf.drawString(10, 530, "FECHA:") pdf.drawString(10, 520, "Nº PLACA VEHIC.:") pdf.drawString(10, 510, "CONDUCTOR:") pdf.drawString(10, 500, "CARGUIO:") pdf.drawString(10, 490, "PROVEEDOR:") pdf.drawString(10, 480, "ORIGEN CARGA:") pdf.drawString(10, 470, "DESTINO CARGA:") pdf.drawString(10, 460, "PESO BRUTO (Kg):") pdf.drawString(10, 450, "PESO TARA (Kg):") pdf.drawString(10, 440, "PESO NETO (Tn):") locale.setlocale(locale.LC_TIME, 'es_ES.utf-8') pdf.drawString(75, 530, self.__carga.created.strftime("%d/%m/%Y %H:%M:%S")) pdf.drawString(75, 520, self.__carga.vehiculo.placa) pdf.drawString( 75, 510, '{} {}'.format(self.__carga.conductor_vehiculo.apellidos, self.__carga.conductor_vehiculo.nombres)) if self.__carga.equipo_carguio: pdf.drawString( 75, 500, '{} {}'.format(self.__carga.equipo_carguio.apellidos, self.__carga.equipo_carguio.nombres)) else: pdf.drawString(75, 500, '') pdf.drawString(75, 490, str(self.__carga.proveedor)) pdf.drawString(75, 480, str(self.__carga.origen)) pdf.drawString(75, 470, str(self.__carga.destino)) pdf.drawRightString(215, 460, numero_decimal(self.__carga.peso_bruto)) pdf.drawRightString(215, 450, numero_decimal(self.__carga.peso_tara)) pdf.drawRightString(215, 440, numero_decimal(self.__carga.peso_neto_tn)) pdf.setFont('Helvetica-Bold', 24) pdf.drawString(15, 365, "A") pdf.drawString(15, 160, "B") qrw = QrCodeWidget('{}{}'.format( 'http://190.104.10.157', reverse_lazy('pesaje-detail', kwargs={'pk': self.__carga.id}))) b = qrw.getBounds() w = b[2] - b[0] h = b[3] - b[1] d = Drawing(60, 60, transform=[60. / w, 0, 0, 60. / h, 0, 0]) d.add(qrw) renderPDF.draw(d, pdf, 161.5, 60) renderPDF.draw(d, pdf, 161.5, 265) pdf.rect(15, 320, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(15, 280, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(15, 240, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(164, 268, 1.9 * cm, 1.9 * cm, stroke=1, fill=0) pdf.rect(15, 115, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(15, 75, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(15, 35, 5 * cm, 1 * cm, stroke=1, fill=0) pdf.rect(164, 63, 1.9 * cm, 1.9 * cm, stroke=1, fill=0) pdf.setDash(1, 2) pdf.line(5, 400, 222, 400) pdf.line(5, 203, 222, 203) pdf.save() pdf = buffer.getvalue() buffer.close() response.write(pdf) return response
def reportedespacho(request, despacho_id): logo = settings.STATIC_ROOT+"/imagenes/logo.jpg" print(logo) inicia=70; queryset = Despacho.objects.filter(pk=despacho_id) response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = 'inline; filename="ticket.pdf"' response['Cache-Control'] = 'no-cache' p = canvas.Canvas(response, pagesize=letter) while (inicia<500): #Encabezado p.setFont("Helvetica-Bold", 8) #p.drawString(450,730-inicia, str(queryset[0].fecha)) #Ticket p.setFont("Helvetica-Bold", 14) p.drawString(350,730-inicia, 'Ticket:') p.drawString(350,750-inicia, str(queryset[0].producto)) p.setFont("Helvetica-Bold", 14) p.drawString(450,730-inicia, str(queryset[0].id)) #barcode=code39.Extended39(str(queryset[0].id),barWidth=0.5*mm,barHeight=5*mm) #barcode.drawOn(p,250,730) qrw = QrCodeWidget(str(queryset[0].id)+';'+ str(queryset[0].cliente)+';' +str(queryset[0].fecha)+';' +str(queryset[0].neto)) b = qrw.getBounds() w=b[2]-b[0] h=b[3]-b[1] d = Drawing(90,90-inicia,transform=[90./w,0,0,90./h,0,0]) #d.add(qrw) renderPDF.draw(d, p, 350, 680-inicia) #Empresa p.drawImage(logo,50,720-inicia) p.setFont("Helvetica-Bold", 24) p.drawString(50,700-inicia, settings.GRAPPELLI_ADMIN_TITLE) p.setFont("Helvetica-Bold", 15) p.drawString(400,800-inicia, "Despacho") #p.drawString(400,784-inicia, queryset[0].fecha.strftime("%d/%m/%Y %I:%M %p")) p.drawString(400,784-inicia, queryset[0].fechastr()) p.setFont("Helvetica-Bold", 15) p.drawString(200,684-inicia, str(queryset[0].ubicacion)) #Productor y Transporte p.setFont("Helvetica-Bold", 12) p.drawString(50, 650-inicia, "Cliente: ") p.drawString(140, 650-inicia, str(queryset[0].cliente)) p.drawString(50, 630-inicia, "Transportista: ") p.drawString(140, 630-inicia, str(queryset[0].transportista)) p.drawString(50, 610-inicia, "Placa: ") p.drawString(140, 610-inicia, str(queryset[0].placa)) p.drawString(340, 610-inicia, str(queryset[0].conductor)) p.drawString(50, 590-inicia, "Observacion: ") p.drawString(140, 590-inicia, str(queryset[0].observacion)) #Cantidades #margen pesos margenpeso=70 p.setFont("Helvetica-Bold", 18) p.drawString(29+margenpeso, 550-inicia, "Peso: ") p.setFont("Helvetica-Bold", 18) p.drawString(50+margenpeso, 530-inicia, "Bruto: ") p.drawString(140+margenpeso, 530-inicia, str(queryset[0].bruto)) p.drawString(280+margenpeso, 530-inicia, "Tara: ") p.drawString(330+margenpeso, 530-inicia, str(queryset[0].tara)) #Neto p.setFont("Helvetica-Bold", 24) p.drawString(300+margenpeso, 500-inicia, "Neto: ") p.drawString(380+margenpeso, 500-inicia, str(queryset[0].neto)) # p.setFont("Helvetica-Bold", 8) if (queryset[0].llega!=None): p.drawString(50+margenpeso, 480-inicia, "Toma peso bruto: ") p.drawString(140+margenpeso, 480-inicia, str(queryset[0].llega.strftime("%d/%m/%Y %I:%M %p"))) if (queryset[0].sale!=None): p.drawString(280+margenpeso, 480-inicia, "Toma peso tara: ") p.drawString(350+margenpeso, 480-inicia, str(queryset[0].sale.strftime("%d/%m/%Y %I:%M %p"))) inicia=inicia+400 p.showPage() p.save() return response
def users_passwords_to_pdf(pdf): """ Create access data sheets for all users as PDF. """ users_pdf_wlan_ssid = config["users_pdf_wlan_ssid"] or "-" users_pdf_wlan_password = config["users_pdf_wlan_password"] or "-" users_pdf_wlan_encryption = config["users_pdf_wlan_encryption"] or "-" users_pdf_url = config["users_pdf_url"] or "-" users_pdf_welcometitle = config["users_pdf_welcometitle"] users_pdf_welcometext = config["users_pdf_welcometext"] if config['users_sort_users_by_first_name']: sort = 'first_name' else: sort = 'last_name' qrcode_size = 2 * cm # qrcode for system url qrcode_url = QrCodeWidget(users_pdf_url) qrcode_url.barHeight = qrcode_size qrcode_url.barWidth = qrcode_size qrcode_url.barBorder = 0 qrcode_url_draw = Drawing(45, 45) qrcode_url_draw.add(qrcode_url) # qrcode for wlan text = "WIFI:S:%s;T:%s;P:%s;;" % (users_pdf_wlan_ssid, users_pdf_wlan_encryption, users_pdf_wlan_password) qrcode_wlan = QrCodeWidget(text) qrcode_wlan.barHeight = qrcode_size qrcode_wlan.barWidth = qrcode_size qrcode_wlan.barBorder = 0 qrcode_wlan_draw = Drawing(45, 45) qrcode_wlan_draw.add(qrcode_wlan) for user in User.objects.all().order_by(sort): pdf.append(Paragraph(escape(user.get_full_name()), stylesheet['h1'])) pdf.append(Spacer(0, 1 * cm)) data = [] # WLAN access data cell = [] cell.append(Paragraph(_("WLAN access data"), stylesheet['h2'])) cell.append(Paragraph("%s:" % _("WLAN name (SSID)"), stylesheet['formfield'])) cell.append(Paragraph(escape(users_pdf_wlan_ssid), stylesheet['formfield_value'])) cell.append(Paragraph("%s:" % _("WLAN password"), stylesheet['formfield'])) cell.append(Paragraph(escape(users_pdf_wlan_password), stylesheet['formfield_value'])) cell.append(Paragraph("%s:" % _("WLAN encryption"), stylesheet['formfield'])) cell.append(Paragraph(escape(users_pdf_wlan_encryption), stylesheet['formfield_value'])) cell.append(Spacer(0, 0.5 * cm)) # OpenSlides access data cell2 = [] cell2.append(Paragraph(_("OpenSlides access data"), stylesheet['h2'])) cell2.append(Paragraph("%s:" % _("Username"), stylesheet['formfield'])) cell2.append(Paragraph(escape(user.username), stylesheet['formfield_value'])) cell2.append(Paragraph("%s:" % _("Password"), stylesheet['formfield'])) cell2.append(Paragraph(escape(user.default_password), stylesheet['formfield_value'])) cell2.append(Paragraph("URL:", stylesheet['formfield'])) cell2.append(Paragraph(escape(users_pdf_url), stylesheet['formfield_value'])) data.append([cell, cell2]) # QRCodes cell = [] if users_pdf_wlan_ssid != "-" and users_pdf_wlan_encryption != "-": cell.append(qrcode_wlan_draw) cell.append(Paragraph(_("Scan this QRCode to connect WLAN."), stylesheet['qrcode_comment'])) cell2 = [] if users_pdf_url != "-": cell2.append(qrcode_url_draw) cell2.append(Paragraph(_("Scan this QRCode to open URL."), stylesheet['qrcode_comment'])) data.append([cell, cell2]) # build table table = Table(data) table._argW[0] = 8 * cm table._argW[1] = 8 * cm table.setStyle(TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')])) pdf.append(table) pdf.append(Spacer(0, 2 * cm)) # welcome title and text pdf.append(Paragraph(escape(users_pdf_welcometitle), stylesheet['h2'])) pdf.append(Paragraph(escape(users_pdf_welcometext).replace('\r\n', '<br/>'), stylesheet['Paragraph12'])) pdf.append(PageBreak()) return pdf
def students_qcard(output,cards): ipad = 1 pad = 10 logging.info("gen qcard") doc = SimpleDocTemplate(output, pagesize=A4 ,leftMargin=1*cm, rightMargin=1*cm, topMargin=0.8*cm, bottomMargin=1*cm, showBoundary=0) styles = getStyleSheet() styleN = styles['Normal'] styleHeaderTopL = styles['CardHeaderTopL'] styleHeaderTopR = styles['CardHeaderTopR'] styleHeaderLeft = styles['CardHeaderLeft'] styleHeaderRight = styles['CardHeaderRight'] styleIL = styles['CardQInfoLines'] styleSeason = styles['CardSeason'] styleCode = styles['CardCode'] styleFullname = styles['CardFullname'] styleFullnameSmall= styles['CardFullnameSmall'] elements = [] cardcells = [] for c in cards: logging.info("gen qcard for %s" % c) info_empty = (c.info_line_1 is None or c.info_line_1=='') and (c.info_line_2 is None or c.info_line_2=='') logging.info("#0") unit = 29*mm qrw = QrCodeWidget(c.qrcode) logging.info("#0.1") logging.info("xxx") b = qrw.getBounds() logging.info( b ) w = b[2]-b[0] h = b[3]-b[1] qrcode_image = Drawing(unit,unit,transform=[unit/w,0,0,unit/h,0,0]) logging.info("#0.2") qrcode_image.add(qrw) logging.info("#1") # c00 = Paragraph("<font size=12>STARLET</font><br/><font size=8>TANEČNÍ ŠKOLA<br/>MANŽELŮ BURYANOVÝCH</font>",styleHeaderLeft) # c01 = Paragraph("ČÍSLO<br/>KURZU",styleHeaderRight) #c10_n = Paragraph(escape(nonone(c.name)),styleName) #c10_s = Paragraph(escape(nonone(c.surname)),styleSurname) #code = nonone(c.course_code) #if len(code)<=3: # code_p = escape(code) #else: # m = re.match('([^\d]*)(.*)',code) # if m: # code_p = "%s<br/>%s"%(escape(m.group(1)), escape(m.group(2))) # else: # code_p = escape(code) c01 = Paragraph(nonone(c.course_code),styleCode) c11 = Paragraph(nonone(c.season_name),styleSeason) logging.info("#2") #if info_empty: # c20_bg = colors.white #else: # c20_bg = colors.black info_text = u"" if not (c.info_line_1 is None or c.info_line_1==''): info_text = info_text+escape(c.info_line_1) if not (c.info_line_2 is None or c.info_line_2==''): if info_text != "": info_text = info_text + "<br/>" info_text = info_text + escape(c.info_line_2) #c10 = Table([[c10_n],[c10_s]], style=[ # ('GRID',(0,0),(-1,-1),1, colors.black) #]) c02 = Paragraph(nonone(info_text),styleIL) c03 = Paragraph(escape(nonone(c.name)+" "+nonone(c.surname)),styleFullname) logging.info("#3") #c21 = Paragraph(nonone(c.season_name),styleSeason) # cc = Table([ [c00,c01],[c10,qrcode_image],[c20,c21] ], colWidths=[5.9*cm,1.5*cm],rowHeights=[1.50*cm,1.95*cm,0.95*cm], style=[ # ('GRID',(0,0),(-1,-1),1, colors.black), # ('BACKGROUND',(0,0),(0,0),colors.black), # ('BACKGROUND',(0,2),(0,2),c20_bg), # ('LEFTPADDING',(0,0),(-1,-1),ipad), # ('RIGHTPADDING',(0,0),(-1,-1),ipad), # ('TOPPADDING',(0,0),(-1,-1),ipad), # ('BOTTOMPADDING',(0,0),(-1,-1),ipad), # ('VALIGN',(0,0),(-1,-1),'MIDDLE'), # ('ALIGN',(0,0),(-1,-1),'CENTER'), # ]) c00 = Paragraph("<font size=14>STARLET</font>",styleHeaderTopL) c10 = Paragraph("<font size=8>TANEČNÍ ŠKOLA<br/>MANŽELŮ BURYANOVÝCH</font>",styleHeaderTopR) # <br/><font size=8>TANEČNÍ ŠKOLA<br/>MANŽELŮ BURYANOVÝCH</font>",styleHeaderLeft) logging.info("#4") cc = Table([ [c00,c10,"#"], [c01,c11,qrcode_image], [c02,"#","#"], [c03,"#","#"]], colWidths=[2.7*cm,2.0*cm,2.7*cm],rowHeights=[1*cm,1.7*cm,1.00*cm,0.7*cm], style=[ #('GRID',(0,0),(-1,-1),1, colors.black), ('BOX',(0,0),(-1,-1),1,colors.black), ('SPAN',(1,0),(2,0)), #ts line ('BACKGROUND',(0,0),(-1,0),colors.black), ('VALIGN',(0,0),(-1,0),'MIDDLE'), ('LINEBELOW',(0,1),(1,1),1,colors.black), ('LINEAFTER',(1,1),(1,2),1,colors.black), ('SPAN',(2,1),(2,2)), #qr ('SPAN',(0,2),(1,2)), #info line ('VALIGN',(0,2),(1,2),'BOTTOM'), ('SPAN',(0,3),(2,3)), #name ('BACKGROUND',(0,3),(-1,3),colors.black), # ('BACKGROUND',(0,2),(0,2),c20_bg), ('LEFTPADDING',(0,0),(-1,-1),ipad), ('RIGHTPADDING',(0,0),(-1,-1),ipad), # ('TOPPADDING',(0,0),(-1,-1),ipad), # ('BOTTOMPADDING',(0,0),(-1,-1),ipad), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('ALIGN',(0,0),(-1,-1),'CENTER'), ]) logging.info("#5") cardcells.append(cc) logging.info("#6") line=[] data=[] for t in cardcells: line.append(t) if len(line)==2: data.append(line) line=[] if len(line)>0: line.extend((2-len(line))*" ") data.append(line) rows = len(data) if rows==0: elements = [] elements.append(Paragraph(u"žádné karty",styleN)) doc.build(elements) return logging.info("#7") bigtable = Table(data,colWidths=[8.5*cm,8.5*cm], rowHeights= rows*[5.43*cm], style=[ ('GRID',(0,0),(-1,-1),0.5,colors.gray), ('ALIGN',(0,0),(-1,-1),'CENTER'), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),pad), ('RIGHTPADDING',(0,0),(-1,-1),pad), ('TOPPADDING',(0,0),(-1,-1),pad), ('BOTTOMPADDING',(0,0),(-1,-1),pad), ]) elements.append(bigtable) logging.info("#8") if len(elements)==0: elements.append(Paragraph(u"žádná data",styleH)) doc.build(elements)