Beispiel #1
0
def pdf(data, loc, selfil):

    filename = str(loc) + "/" + str(data[0]) + "_election_.pdf"
    c = canvas.Canvas(filename, pagesize=portrait(A4))
    c.drawInlineImage("gov1.png", 20, 740, width=None, height=None)
    c.drawInlineImage("gov2.png", 460, 740, width=None, height=None)
    #c.setFont('Times-Bold', 18,leading=0)
    c.drawString(250, 675, "Confidential ! ")
    c.rect(20, 430, 545, 230)
    vid = "Voter ID: " + str(data[9])
    c.drawString(35, 640, vid)
    cid = "Citizenship ID Number: " + str(data[8])
    c.drawString(35, 625, cid)
    usr = "******" + data[0]
    c.drawString(35, 610, usr)
    pw = "Password: "******"Date of Birth: " + str(data[5])
    c.drawString(35, 580, dob)
    eml = "Email: " + str(data[1])
    c.drawString(35, 565, eml)
    phon = "Phone Number: " + str(data[2])
    c.drawString(35, 550, phon)
    add = "Address: " + str(data[3])
    c.drawString(35, 535, add)
    c.drawString(35, 520, "Province: 1")
    c.drawInlineImage(selfil, 440, 540, width=115, height=110)
    bar = code93.Extended93(str(data[9]))
    # bar.barHeight=50
    # bar.barWidth=100
    bar.drawOn(c, 440, 500)

    print("dd")
    c.save()
Beispiel #2
0
 def _flowable(self, node, extra_style=None):
     if node.tag == 'para':
         style = self.styles.para_style_get(node)
         if extra_style:
             style.__dict__.update(extra_style)
         result = []
         for i in self._textual(node).split('\n'):
             result.append(
                 platypus.Paragraph(
                     i, style,
                     **(utils.attr_get(node, [], {'bulletText': 'str'}))))
         return result
     elif node.tag == 'barCode':
         try:
             from reportlab.graphics.barcode import code128
             from reportlab.graphics.barcode import code39
             from reportlab.graphics.barcode import code93
             from reportlab.graphics.barcode import common
             from reportlab.graphics.barcode import fourstate
             from reportlab.graphics.barcode import usps
         except Exception, e:
             return None
         args = utils.attr_get(
             node, [], {
                 'ratio': 'float',
                 'xdim': 'unit',
                 'height': 'unit',
                 'checksum': 'int',
                 'quiet': 'int',
                 'width': 'unit',
                 'stop': 'bool',
                 'bearers': 'int',
                 'barWidth': 'float',
                 'barHeight': 'float'
             })
         codes = {
             'codabar': lambda x: common.Codabar(x, **args),
             'code11': lambda x: common.Code11(x, **args),
             'code128': lambda x: code128.Code128(x, **args),
             'standard39': lambda x: code39.Standard39(x, **args),
             'standard93': lambda x: code93.Standard93(x, **args),
             'i2of5': lambda x: common.I2of5(x, **args),
             'extended39': lambda x: code39.Extended39(x, **args),
             'extended93': lambda x: code93.Extended93(x, **args),
             'msi': lambda x: common.MSI(x, **args),
             'fim': lambda x: usps.FIM(x, **args),
             'postnet': lambda x: usps.POSTNET(x, **args),
         }
         code = 'code128'
         if node.get('code'):
             code = node.get('code').lower()
         return codes[code](self._textual(node))
def code93_demo(barcode_value):
    doc = SimpleDocTemplate('code93_demo.pdf')
    styles = getSampleStyleSheet()
    flowables = []

    flowables.append(Paragraph('Code 93 Standard:', style=styles['Normal']))
    barcode93Std = code93.Standard93()
    flowables.append(barcode93Std)

    flowables.append(Spacer(0, 25))

    flowables.append(Paragraph('Code 93 Extended:', style=styles['Normal']))
    barcode93 = code93.Extended93(barcode_value)
    flowables.append(barcode93)

    doc.build(flowables)
Beispiel #4
0
def pdf(request,data):
    buffer=io.BytesIO()
    filename=str(data[0])+"_election_.pdf"
    c=canvas.Canvas(buffer,pagesize=portrait(A4))
    media=settings.MEDIA_ROOT
    # os.open("/media/gov1.png",flags=os.O_RDONLY)
    c.drawInlineImage(media+"/gov1.png",20,740,width=None,height=None)
    c.drawInlineImage(media+"/gov2.png", 460, 740, width=None, height=None)
    #c.setFont('Times-Bold', 18,leading=0)
    c.drawInlineImage(media+"/conf.png", 215, 675, width=150, height=17)
    c.rect(20,430,545,230)
    vid="Voter ID: "+str(data[3])
    c.drawString(35,640,vid)
    cid="Citizenship ID Number: "+str(data[4])
    c.drawString(35, 625,cid)
    usr="******"+data[0]
    c.drawString(35, 610,usr)
    pw="Full Name: "+str(data[1])
    c.drawString(35, 595, pw)
    dob="Date of Birth: "+str(data[7])
    c.drawString(35, 580, dob)
    eml="Email: "+str(data[2])
    c.drawString(35, 565, eml)
    phon="Phone Number: "+str(data[5])
    c.drawString(35, 550, phon)
    add="Address: "+str(data[6])
    c.drawString(35, 535, add)
    c.drawString(35, 520, "Province: "+str(data[10]))
    c.drawString(35, 505, "Remark: " + str(data[9]))
    c.drawString(35, 490, "Vote Status: " + str(data[14]))
    c.drawInlineImage(media+"/"+str(data[11]), 475, 575, width=85, height=80)
    try:
        c.drawInlineImage(str(data[15]), 140, 500, width=20, height=20)
    except:
        pass
    bar=code93.Extended93(str(data[3]))
    # bar.barHeight=50
    # bar.barWidth=100
    bar.drawOn(c,472,545)
    c.drawInlineImage(media + "/" + str(data[12]), 170, 250, width=280, height=150)
    c.drawInlineImage(media + "/" + str(data[13]), 170, 50, width=280, height=150)

    c.showPage()
    c.save()
    buffer.seek(io.SEEK_SET)
    return FileResponse(buffer,as_attachment=True,filename=filename)
Beispiel #5
0
    def _flowable(self, node, extra_style=None):
        if node.tag=='pto':
            return self._pto(node)
        if node.tag=='para':
            style = self.styles.para_style_get(node)
            if extra_style:
                style.__dict__.update(extra_style)
            result = []
            for i in self._textual(node).split('\n'):
                result.append(platypus.Paragraph(i, style, **(utils.attr_get(node, [], {'bulletText':'str'}))))
            return result
        elif node.tag=='barCode':
            try:
                from reportlab.graphics.barcode import code128
                from reportlab.graphics.barcode import code39
                from reportlab.graphics.barcode import code93
                from reportlab.graphics.barcode import common
                from reportlab.graphics.barcode import fourstate
                from reportlab.graphics.barcode import usps
                from reportlab.graphics.barcode import createBarcodeDrawing

            except ImportError:
                _logger.warning("Cannot use barcode renderers:", exc_info=True)
                return None
            args = utils.attr_get(node, [], {'ratio':'float','xdim':'unit','height':'unit','checksum':'int','quiet':'int','width':'unit','stop':'bool','bearers':'int','barWidth':'float','barHeight':'float'})
            codes = {
                'codabar': lambda x: common.Codabar(x, **args),
                'code11': lambda x: common.Code11(x, **args),
                'code128': lambda x: code128.Code128(str(x), **args),
                'standard39': lambda x: code39.Standard39(str(x), **args),
                'standard93': lambda x: code93.Standard93(str(x), **args),
                'i2of5': lambda x: common.I2of5(x, **args),
                'extended39': lambda x: code39.Extended39(str(x), **args),
                'extended93': lambda x: code93.Extended93(str(x), **args),
                'msi': lambda x: common.MSI(x, **args),
                'fim': lambda x: usps.FIM(x, **args),
                'postnet': lambda x: usps.POSTNET(x, **args),
                'ean13': lambda x: createBarcodeDrawing('EAN13', value=str(x), **args),
                'qrcode': lambda x: createBarcodeDrawing('QR', value=x, **args),
            }
            code = 'code128'
            if node.get('code'):
                code = node.get('code').lower()
            return codes[code](self._textual(node))
        elif node.tag=='name':
            self.styles.names[ node.get('id')] = node.get('value')
            return None
        elif node.tag=='xpre':
            style = self.styles.para_style_get(node)
            return platypus.XPreformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int','frags':'int'})))
        elif node.tag=='pre':
            style = self.styles.para_style_get(node)
            return platypus.Preformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int'})))
        elif node.tag=='illustration':
            return  self._illustration(node)
        elif node.tag=='blockTable':
            return  self._table(node)
        elif node.tag=='title':
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Title']
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif re.match('^h([1-9]+[0-9]*)$', (node.tag or '')):
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Heading'+str(node.tag[1:])]
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif node.tag=='image':
            image_data = False
            if not node.get('file'):
                if node.get('name'):
                    if node.get('name') in self.doc.images:
                        _logger.debug("Image %s read ", node.get('name'))
                        image_data = self.doc.images[node.get('name')].read()
                    else:
                        _logger.warning("Image %s not defined", node.get('name'))
                        return False
                else:
                    import base64
                    newtext = node.text
                    if self.localcontext:
                        newtext = utils._process_text(self, node.text or '')
                    image_data = base64.decodestring(newtext)
                if not image_data:
                    _logger.debug("No inline image data")
                    return False
                image = StringIO(image_data)
            else:
                _logger.debug("Image get from file %s", node.get('file'))
                image = _open_image(node.get('file'), path=self.doc.path)
            return platypus.Image(image, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height'])))
        elif node.tag=='spacer':
            if node.get('width'):
                width = utils.unit_get(node.get('width'))
            else:
                width = utils.unit_get('1cm')
            length = utils.unit_get(node.get('length'))
            return platypus.Spacer(width=width, height=length)
        elif node.tag=='section':
            return self.render(node)
        elif node.tag == 'pageNumberReset':
            return PageReset()
        elif node.tag in ('pageBreak', 'nextPage'):
            return platypus.PageBreak()
        elif node.tag=='condPageBreak':
            return platypus.CondPageBreak(**(utils.attr_get(node, ['height'])))
        elif node.tag=='setNextTemplate':
            return platypus.NextPageTemplate(str(node.get('name')))
        elif node.tag=='nextFrame':
            return platypus.CondPageBreak(1000)           # TODO: change the 1000 !
        elif node.tag == 'setNextFrame':
            from reportlab.platypus.doctemplate import NextFrameFlowable
            return NextFrameFlowable(str(node.get('name')))
        elif node.tag == 'currentFrame':
            from reportlab.platypus.doctemplate import CurrentFrameFlowable
            return CurrentFrameFlowable(str(node.get('name')))
        elif node.tag == 'frameEnd':
            return EndFrameFlowable()
        elif node.tag == 'hr':
            width_hr=node.get('width') or '100%'
            color_hr=node.get('color')  or 'black'
            thickness_hr=node.get('thickness') or 1
            lineCap_hr=node.get('lineCap') or 'round'
            return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
        else:
            sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
            return None