示例#1
0
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))
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
文件: views.py 项目: Firstyear/drinks
 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) 
示例#8
0
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")
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
文件: views.py 项目: Firstyear/drinks
 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)
示例#14
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)
示例#15
0
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
示例#16
0
 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)
示例#17
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)
示例#18
0
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))
示例#19
0
 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)
示例#21
0
    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
示例#22
0
    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)
示例#23
0
文件: views.py 项目: HEG-Arc/voices
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
示例#24
0
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])
示例#25
0
 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)
示例#26
0
文件: views.py 项目: arbin/qrcoder
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
示例#27
0
文件: pdf.py 项目: prcek/TSReg
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
示例#28
0
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,
    )
示例#29
0
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
示例#30
0
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
示例#31
0
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()
示例#32
0
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
示例#33
0
 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)
示例#34
0
文件: pdf.py 项目: prcek/TSReg
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")
示例#35
0
    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)
示例#36
0
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
示例#37
0
    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()
示例#38
0
    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)
示例#39
0
    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)
示例#40
0
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)
示例#41
0
    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())
示例#42
0
    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()
示例#43
0
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)
示例#45
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
示例#46
0
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')
示例#47
0
    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
示例#48
0
文件: views.py 项目: roviol/bascula
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
示例#49
0
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
示例#50
0
文件: pdf.py 项目: prcek/TSReg
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)