예제 #1
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
예제 #2
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
예제 #3
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
예제 #4
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
예제 #5
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)
예제 #6
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))
예제 #7
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)
예제 #8
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])
 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
파일: 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)
예제 #11
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,
    )
예제 #12
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
예제 #13
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)
예제 #14
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))
예제 #15
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)
예제 #16
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)
예제 #17
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()
예제 #18
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)
예제 #19
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)
예제 #20
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
예제 #21
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)
예제 #22
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)
예제 #23
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
예제 #24
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()
예제 #25
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
예제 #26
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
예제 #27
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)
예제 #28
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
예제 #29
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')
예제 #30
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