Beispiel #1
0
def pdf_write(generated_pdf_path):
    """
    生成pdf
    :return:
    """
    # 增加的字体,支持中文显示,需要自行下载支持中文的字体
    font_path = current_app.config.get("SIM_SUN")

    pdfmetrics.registerFont(TTFont('SimSun', os.path.join(font_path, 'SimSun.ttf')))
    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(fontName='SimSun', name='SimSun', leading=20, fontSize=12))
    data = list()
    # 添加一段文字
    paragraph = paragraph_model("测试添加一段文字")
    data.append(paragraph)
    data.append(PageBreak())  # 分页标识
    # 添加table和图片
    table = table_model()
    data.append(table)
    data.append(PageBreak())  # 分页标识
    img = image_model()
    data.append(img)

    # 设置生成pdf的名字和编剧
    pdf = SimpleDocTemplate(generated_pdf_path, rightMargin=0, leftMargin=0, topMargin=40, bottomMargin=0, )
    # 设置pdf每页的大小
    pdf.pagesize = (9 * inch, 10 * inch)

    pdf.multiBuild(data)
    return generated_pdf_path
Beispiel #2
0
def write_character_style_test():
    Style=getSampleStyleSheet()
    filename = PROJECT_PATH + '/file_location/reportlab-character_style.pdf'
    # 字体的样式
    bt = Style['Normal']
    # bt.fontName='song'   # 使用的字体
    # 字号 
    bt.fontSize=14
    # 该属性支持自动换行,』CJK『用于中文方式的换行,用于英文中会截断单词,造成
    bt.wordWrap = 'CJK'    
    # 阅读困难,可改为'Normal'
    # 该属性支持第一行开头的空格
    bt.firstLineIndent = 32
    # 该属性用于设置行距
    bt.leading = 20         

    ct=Style['Normal']
    # ct.fontName='song'
    ct.fontSize=12
    # 居中
    ct.alignment=1              
    ct.textColor = colors.red

    t = Paragraph('hello', bt)
    pdf=SimpleDocTemplate(filename)
    pdf.multiBuild([t])
Beispiel #3
0
 def multiBuild(self,
                story,
                filename=None,
                canvasMaker=Canvas,
                maxPasses=10,
                onFirstPage=_doNothing,
                onLaterPages=_doNothing):
     self._calc()  #in case we changed margins sizes etc
     frameT = Frame(self.leftMargin,
                    self.bottomMargin,
                    self.width,
                    self.height,
                    id='normal')
     # we add the function for the later pages to the onPageEnd of the PageTemplate because we must know the part for the page
     self.addPageTemplates([
         PageTemplate(id='First',
                      frames=frameT,
                      onPage=onFirstPage,
                      pagesize=self.pagesize),
         PageTemplate(id='Later',
                      frames=frameT,
                      onPageEnd=onLaterPages,
                      pagesize=self.pagesize)
     ])
     if onFirstPage is _doNothing and hasattr(self, 'onFirstPage'):
         self.pageTemplates[0].beforeDrawPage = self.onFirstPage
     if onLaterPages is _doNothing and hasattr(self, 'onLaterPages'):
         self.pageTemplates[1].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self, story, self._filename, canvasMaker,
                                  maxPasses)
Beispiel #4
0
def generate_pdf(table_header, datas):
    """
    生成pdf
    :return:
    """
    path = "test.pdf"
    data = list()
    # 添加table
    table = table_model(table_header, datas)
    data.append(table)
    data.append(PageBreak())  # 分页标识
    # 设置生成pdf的名字和编剧
    pdf = SimpleDocTemplate(path,
                            rightMargin=0,
                            leftMargin=0,
                            topMargin=0,
                            bottomMargin=0)
    # 设置pdf每页的大小
    pdf.pagesize = (20 * inch, 16 * inch)

    pdf.multiBuild(data)

    # buff.seek(0)
    # return buff
    return path
Beispiel #5
0
def generate(output_file, starting_date, ending_date=None):
    if not ending_date:
        ending_date = datetime.datetime.utcnow()
    events = get_events(starting_date, ending_date)
    events.sort(key=lambda e: e.title)
    timeline_data = get_timeline_data(events)

    for event, periods in timeline_data:
        print(event.title)
        for period in periods:
            print(" "*int(80*period[0]), "#"*int(80*(period[1]-period[0])))
        print()


    story = list()
    try:
        insert_title(story, starting_date, ending_date)
        for event, periods in timeline_data:
            event.set_timeline(TimelineItem(event.title, periods))
        insert_events(story, events, with_summary=len(events) > 20)
    finally:
        doc = SimpleDocTemplate(output_file)
        doc.multiBuild(story)

    return output_file
Beispiel #6
0
 def pdformat(self):
     with con:
         items = []
         cur = con.cursor()
         qpaper = str(self.ui.lineEdit.text())
         with open(qpaper) as fp:
             for line in fp:
                 words = line.split()
                 for word in words:
                     cur.execute('SELECT * from kywrds WHERE kywrd like ?',
                                 [word])
                     result = cur.fetchall()
                     if result:
                         for row in result:
                             result1 = row[0]
                             result2 = row[1]
                             result3 = row[2]
                             address = 'Level: ' + str(
                                 result1
                             ) + ' ' + ' ' + ' ' + ' ' + 'Percentage: ' + str(
                                 result3
                             ) + '%' + '    ' + 'Keyword: ' + result2
                             items.append(
                                 platypus.Paragraph(address, PS('body')))
                         doc = SimpleDocTemplate('report1.pdf')
                         doc.multiBuild(items)
Beispiel #7
0
  def getdetails(self):

      with con:
    
          cur = con.cursor()
          pid = str(self.ui.lineEdit_3.text())
          cur.execute('SELECT count(*) FROM ptestresults where pid like ? AND (ptestresults.t1 = "P" OR ptestresults.t2 = "P")',['%'+ pid + '%']); 
          result = cur.fetchall()
          for row in result:
            tcount = row[0]
            # print tcount
          cur.execute('SELECT s1,s2,s3,s4,s5,s6,s7,s8,s9,s10 FROM psymptoms where pid like ? ',['%'+ pid + '%']); 
          result1 = cur.fetchall()
          cnt1 = 0
          result2 = str(" ")
          for row in result1:
              if row[0] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str("___________________ You have Pain in Throat Region while taking the food ________________________") 
              if row[1] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str("____________________ You have Pain in chest to abdomen Region_________________________") 
              if row[2] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str("_____________ Your pain is lasting for several hours ______________") 
              if row[3] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You have difficulty in swallowing food ")
              if row[4] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You are unable to swallow food")
              if row[5] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" Food is stucking in throat and chest region")
              if row[6] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You have a feeling of fullness without taking food ")
              if row[7] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You are suffering from low to high fever ")
              if row[8] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You are shaking with chills")
              if row[9] != 'N': 
                 cnt1 = cnt1+1
                 result2 = result2 + str(" You are suffering from chroniic cough ")
              # print cnt1
          if (tcount > 0):
	    # print "Consult Specialist immediately as +ve test results are there"
            result2 = result2 + str("Consult Specialist immediately as +ve test results are there")
          if ((tcount == 0) and (cnt1 > 5)):
	    # print "Consult Specialist immediately as above mentioned +ve symptoms are there"
            result2 = result2 + str("Consult Specialist immediately as above mentioned +ve symptoms are there")
          if ((tcount == 0) and (cnt1 <= 5)):
	    # print "Consult Specialist as above mentioned +ve symptoms are there"
            result2 = result2 + str("Consult Specialist as above mentioned +ve symptoms are there")
          items = []
          items.append(platypus.Paragraph(result2,PS('body')))
          doc = SimpleDocTemplate('medrep1.pdf')
          doc.multiBuild(items)
Beispiel #8
0
    def pdf_Platypus(request):
        response = HttpResponse(content_type='application/pdf')  #tipo de rpta
        #pdf_name = "expedientes1.pdf"  # nombre para la descarga
        #response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name #descarga con el nombre indicado
        buff = BytesIO()  #almacena el doc
        #c = canvas.Canvas(buff)
        doc = SimpleDocTemplate(
            buff,
            pagesize=A4,
            rightMargin=50,  #miderecha
            leftMargin=50,  #mi izquierda
            topMargin=60,
            bottomMargin=70,  #inferior hoja	                            
        )  #plantilla del doc enlazado al buffer
        expedientes = []  #lista para generar doc
        styles = getSampleStyleSheet()  #estilos
        style = styles['Title']
        style1 = styles['Normal']
        style.spaceAfter = 0.3 * inch
        style.fontSize = 21
        style.fontName = "Times-Roman"
        style.textColor = "Blue"

        #style.alignment=TA_JUSTIFY
        """p = ParagraphStyle('parrafos', 
						   
						   fontSize = 28,
						   fontName="Times-Roman")"""
        header = Paragraph("Listado de expedientes", style)  #encabezado doc
        #header = Paragraph("Listado de expedientes", styles['Heading1'])#encabezado doc
        #header = Paragraph("Listado de expedientes", p)#encabezado doc
        """f=Image('static/img/admin.png', width=30, height=30)
		f.hAlign = 'LEFT'
		expedientes.append(f)
		expedientes.append(Spacer(1, 0.25*inch))"""
        expedientes.append(header)  #agrega encabezado del doc a lista
        headings = ('Nombre', 'Anio', 'descripcion', 'Procede'
                    )  #cabecera de tabla

        allclientes = [(Paragraph(p.nombre, style1), p.anio,
                        Paragraph(p.descripcion, style1),
                        Paragraph(str(p.serie), styles['Normal']))
                       for p in expediente.objects.all()]  #registros
        t = Table([headings] + allclientes,
                  colWidths=(50 * mm, 10 * mm, 70 * mm, 30 * mm),
                  repeatRows=1)  #crea tabla
        #t = Table([headings] + allclientes,repeatRows=1)#crea tabla
        t.setStyle(
            TableStyle([('GRID', (0, 0), (3, -1), 1, colors.dodgerblue),
                        ('LINEBELOW', (0, 0), (-1, 0), 2, colors.darkblue),
                        ('BACKGROUND', (0, 0), (-1, 0), colors.dodgerblue)
                        ]))  #estilos tabla
        expedientes.append(t)  #agrega tabla a lista

        #doc.build(expedientes) #genera doc en base a lista
        doc.multiBuild(expedientes, canvasmaker=FooterCanvas)
        response.write(
            buff.getvalue())  #imprimimos el doc que sta en el buffer(pdf)
        buff.close()  #cerramos buffer
        return response  #retornamos pdf
Beispiel #9
0
 def generate_report(self):
     story = []
     try:
         doc = SimpleDocTemplate("test_report.pdf",
                                 pagesize=A4,
                                 rightMargin=5,
                                 leftMargin=5,
                                 topMargin=5,
                                 bottomMargin=5)
         story.append(self.generate_header_table())
         story.append(self.generate_padding(10))
         story.append(self.generate_info_table())
         story.append(self.generate_padding(10))
         if 'complete' not in self.test_type.lower():
             story.append(
                 Table([["*{}".format(self.test_type)]],
                       colWidths=400,
                       style=None))
         story.append(self.generate_data_table())
         story.append(self.generate_padding(25))
         story.append(self.generate_footer_table())
         doc.multiBuild(story)
         os.startfile(r'test_report.pdf')
     except Exception as e:
         raise e
Beispiel #10
0
 def multiBuild(self, story, filename=None, canvasMaker=Canvas, maxPasses=10, onFirstPage=_doNothing, onLaterPages=_doNothing):
     self._calc()    #in case we changed margins sizes etc
     frameT = Frame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
     # we add the function for the later pages to the onPageEnd of the PageTemplate because we must know the part for the page
     self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage,pagesize=self.pagesize),
                     PageTemplate(id='Later',frames=frameT, onPageEnd=onLaterPages,pagesize=self.pagesize)])
     if onFirstPage is _doNothing and hasattr(self,'onFirstPage'):
         self.pageTemplates[0].beforeDrawPage = self.onFirstPage
     if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
         self.pageTemplates[1].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self, story, self._filename, canvasMaker, maxPasses)
Beispiel #11
0
def simple_toc():
    doc = SimpleDocTemplate("Ejemplo11.pdf")
    story = []
    styles = getSampleStyleSheet()

    toc = TableOfContents()
    toc.levelStyles = [
        ParagraphStyle(fontName='Helvetica',
                       fontSize=14,
                       name='Heading1',
                       leftIndent=20,
                       firstLineIndent=-20,
                       spaceBefore=5,
                       leading=16),
        ParagraphStyle(fontName='Times-Roman',
                       fontSize=14,
                       name='Heading2',
                       leftIndent=20,
                       firstLineIndent=-20,
                       spaceBefore=5,
                       leading=16),
    ]
    story.append(toc)

    ipsum = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit,
    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
    nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
    reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
    culpa qui officia deserunt mollit anim id est laborum.'''

    para = Paragraph("The Beginning", style=styles['Heading1'])
    toc.addEntry(0, 'The Beginning', 1)
    story.append(para)
    para = Paragraph(ipsum, style=styles['Normal'])
    story.append(para)
    story.append(PageBreak())

    para = Paragraph("The Middle", style=styles['Heading1'])
    toc.addEntry(0, 'The Middle', 2)
    story.append(para)
    para = Paragraph("The Middle Sub-Header", style=styles['Heading2'])
    toc.addEntry(1, 'The Middle Sub-Header', 2)
    story.append(para)
    para = Paragraph(ipsum, style=styles['Normal'])
    story.append(para)
    story.append(PageBreak())

    para = Paragraph("The End", style=styles['Heading1'])
    toc.addEntry(0, 'The End', 3)
    story.append(para)

    doc.multiBuild(story)
def main():
    try:
        path_omd = Path("%s/git/check_mk/omd/" % Path.home())
        path_license_texts = path_omd / "license_sources/license_texts/"
        path_pdf = path_omd / "License_texts.pdf"
        path_cover = path_omd / "license_sources/licenses_cover.pdf"
    except:
        raise OSError

    registerFont(TTFont('Calibri', 'Calibri.ttf'))
    doc = SimpleDocTemplate(
        str(path_pdf),
        pagesize=letter,
        bottomMargin=.4 * inch,
        topMargin=.6 * inch,
        rightMargin=.8 * inch,
        leftMargin=.8 * inch)
    toc = TableOfContents()
    toc.levelStyles = [
        PS(fontName='Calibri',
           fontSize=14,
           name='TOCHeading1',
           leftIndent=20,
           firstLineIndent=-20,
           spaceBefore=5,
           leading=16),
        PS(fontSize=12, name='TOCHeading2', leftIndent=40, firstLineIndent=-20, leading=12),
    ]
    title = PS(name='Title', fontSize=24, leading=16)
    h1 = PS(name='Heading1', fontSize=16, leading=16)
    normal = PS(name='Normal', fontSize=8)
    spacer = Spacer(width=0, height=2 * cm)

    story = []
    story.append(Paragraph('<b>Content</b>', title))
    story.append(spacer)
    story.append(toc)

    for file_path in sorted(path_license_texts.iterdir()):
        with file_path.open(encoding="utf-8") as txt_file:
            headline = "<b>%s</b>" % txt_file.readline().replace("\n", "<br /><br />\n")
            text_content = txt_file.read().replace("\n", "<br />\n")
        story.append(PageBreak())
        story.append(heading(headline, h1))
        story.append(Paragraph(text_content, normal))

    doc = MyDocTemplate(str(path_pdf))
    doc.multiBuild(story)

    pdf_merger = PdfFileMerger()
    pdf_merger.append(PdfFileReader(str(path_cover)))
    pdf_merger.append(PdfFileReader(str(path_pdf)))
    pdf_merger.write(str(path_pdf))
Beispiel #13
0
def generate_pdf_new(data_users):

    # List of users
    logo = Image('logo.jpg', 1 * inch, 1 * inch)
    logo.hAlign = 'LEFT'

    data = data_users

    buf = BytesIO()

    pdf = SimpleDocTemplate(buf, pagesize=letter)

    table = Table(data)

    # add style

    style = TableStyle([
        ('BACKGROUND', (0, 0), (3, 0), HexColor('#C7D4DB')),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.black),
        ('ALIGN', (0, 0), (-1, -1), 'LEFT'),
        ('FONTNAME', (0, 0), (-1, 0), 'Courier-Bold'),
        ('FONTSIZE', (0, 0), (-1, 0), 10),
        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
    ])
    table.setStyle(style)

    # 2) Alternate backgroud color
    rowNumb = len(data)
    for i in range(1, rowNumb):
        bc = colors.white

        ts = TableStyle([('BACKGROUND', (0, i), (-1, i), bc)])
        table.setStyle(ts)

    # 3) Add borders
    ts = TableStyle([
        ('BOX', (0, 0), (-1, -1), -1, HexColor('#e7eaed')),
        ('LINEBEFORE', (2, 1), (2, -1), -1, colors.red),
        ('LINEABOVE', (0, 2), (-1, 2), -1, colors.green),
        ('GRID', (0, 0), (-1, -1), -1, HexColor('#e7eaed')),
    ])
    table.setStyle(ts)

    elems = []

    elems.append(logo)
    elems.append(table)

    pdf.multiBuild(elems)
    pdf = buf.getvalue()

    return pdf
    def export(self, filename, data_align='LEFT', table_halign='LEFT'):
        """
        Export the data to a PDF file.

        Arguments:
            filename - The filename for the generated PDF file.
            data_align - The alignment of the data inside the table (eg.
                'LEFT', 'CENTER', 'RIGHT')
            table_halign - Horizontal alignment of the table on the page
                (eg. 'LEFT', 'CENTER', 'RIGHT')
        """

        page_size = landscape(A4)
        doc = SimpleDocTemplate(filename, pagesize=page_size, topMargin=27*mm, leftMargin=9*mm, rightMargin=9*mm)

        story = []

        # # Header

        font_size = 2
        left = ParagraphStyle(name="left", font="Helvetica", alignment=TA_LEFT, font_size=font_size)
        right = ParagraphStyle(name="right", font="Helvetica", alignment=TA_RIGHT, font_size=font_size)

        # Table

        style = TableStyle([
            ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
            ('ALIGN',(0, 0),(0,-1), data_align),
            ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
            ('INNERGRID', (0, 0), (-1, -1), 0.50, colors.black),
            ('BOX', (0,0), (-1,-1), 0.25, colors.black),
        ])

        font_size = 8  # self.__get_font_size(self.data, 10)
        converted_data = self.__convert_data(style, font_size)
        col_widths = self.__get_col_widths(font_size)
        table = Table(converted_data, colWidths=col_widths, hAlign=table_halign, repeatRows=1)
        table.setStyle(style)

        story.append(table)

        doc.multiBuild(story, canvasmaker=FooterCanvas, onFirstPage=self.header, onLaterPages=self.header)

        update_box = QMessageBox()
        update_box.setText("Successfully Saved.")
        p = QPixmap()
        p.load("info.png")
        update_box.setIconPixmap(p)

        if update_box.exec():
            pass
Beispiel #15
0
 def multiBuild(self,
                story,
                filename=None,
                canvasMaker=Canvas,
                maxPasses=10,
                onFirstPage=_doNothing,
                onLaterPages=_doNothing):
     self._calc()  #in case we changed margins sizes etc
     frameT = Frame(self.leftMargin,
                    self.bottomMargin,
                    self.width,
                    self.height,
                    id='normal')
     self.addPageTemplates([
         PageTemplate(id='Later',
                      frames=frameT,
                      onPageEnd=onLaterPages,
                      pagesize=self.pagesize)
     ])
     if onLaterPages is _doNothing and hasattr(self, 'onLaterPages'):
         self.pageTemplates[0].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self,
                                  story,
                                  maxPasses,
                                  canvasmaker=canvasMaker)
     self._prepareTOC()
     contentFile = self.filename
     self.filename = FileDummy()
     self.pageTemplates = []
     self.addPageTemplates([
         PageTemplate(id='First',
                      frames=frameT,
                      onPage=onFirstPage,
                      pagesize=self.pagesize)
     ])
     if onFirstPage is _doNothing and hasattr(self, 'onFirstPage'):
         self.pageTemplates[0].beforeDrawPage = self.onFirstPage
     self.addPageTemplates([
         PageTemplate(id='Later',
                      frames=frameT,
                      onPageEnd=self.laterPages,
                      pagesize=self.pagesize)
     ])
     if onLaterPages is _doNothing and hasattr(self, 'onLaterPages'):
         self.pageTemplates[1].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self,
                                  self._tocStory,
                                  maxPasses,
                                  canvasmaker=canvasMaker)
     self.mergePDFs(self.filename, contentFile)
Beispiel #16
0
    def __init__(self, newer_dict, pdfpath, **kwargs):
        #self.newer_dict = newer_dict
        self.pdfpath = pdfpath
        self.woning_naam = newer_dict['bouwheer']
        self.werf_straat = newer_dict['werfadres']
        self.werf_gemeente = newer_dict['werfgemeente']
        self.woning_straat = newer_dict['woning straat']
        self.woning_gemeente = newer_dict['woning gemeente']
        self.architect_naam = newer_dict['architect']
        self.architect_straat = newer_dict['architect straat']
        self.architect_gemeente = newer_dict['architect gemeente']
        self.aannemer_naam = newer_dict['aannemer']
        self.aannemer_straat= newer_dict['aannemer straat']
        self.aannemer_gemeente = newer_dict['aannemer gemeente']
        self.ingenieur_naam = newer_dict['ingenieur']
        self.datum = time.strftime("%d/%m/%Y")
        self.dossier_nummer = newer_dict['dossier_nummer']

        #adding styles
        styles=getSampleStyleSheet()
        self.add_styles(styles)

        # Content
        Story = []

            # voorblad
        self.add_header(Story, styles)
        self.voorblad(Story, styles)
        Story.append(PageBreak()) #comment out for empty page bug??

            #inhoudstafel
        self.add_header(Story, styles)
        self.inhouds_tafel(Story, styles)
        Story.append(PageBreak())

            #bundel
        self.add_header(Story, styles)
        self.beschrijving(Story, styles)


        # Build pdf
        #pdfpath = self.folder_scan[self.newer_dict['dossier']]['path'] + "//Stabiliteit//Algemene documenten//stabiliteitsbundel.pdf"
        doc = SimpleDocTemplate(self.pdfpath, pagesize=A4,
                            rightMargin= 2*cm,
                            leftMargin= 2*cm,
                            topMargin= 2*cm,
                            bottomMargin=100
                            )
        doc.multiBuild(Story, canvasmaker = FooterCanvas)
Beispiel #17
0
    def printPdf(self):
        filename = self.name + '_timetable.pdf'
        doc = SimpleDocTemplate(filename,
                                pagesize=A4,
                                rightMargin=30,
                                leftMargin=30,
                                topMargin=30,
                                bottomMargin=18)
        doc.pagesize = portrait(A4)
        story = []

        for i, day in enumerate(self.slots):
            data = [[''] * 5 for i in range(3)]
            data[0][0] = self.name
            data[1] = [
                'Date', 'Time', 'Course Code', 'Course Name',
                'No. of\nStudents'
            ]
            data[2][0] = 'Day ' + str(i + 1)
            style = [('SPAN', (0, 0), (-1, 0)), ('SPAN', (0, 2), (-1, 2)),
                     ('ALIGN', (0, 0), (-1, 1), 'CENTER'),
                     ('VALIGN', (0, 0), (-1, 1), 'MIDDLE'),
                     ('ALIGN', (0, 3), (-1, -1), 'CENTER'),
                     ('VALIGN', (0, 3), (-1, -1), 'MIDDLE'),
                     ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                     ('BOX', (0, 0), (-1, -1), 0.25, colors.black)]
            for i, slot in enumerate(day):
                for sub in slot.subjects:
                    d = slot.time_slot[0]
                    time = '12:'
                    if not slot.time_slot[1] // 100 in [0, 12]:
                        time = str((slot.time_slot[1] // 100) % 12) + ':'
                    time += str(slot.time_slot[1] % 100)
                    time += 'PM' if (slot.time_slot[1] // 100) > 11 else 'AM'
                    data.append([
                        d, time, sub.code, sub.name,
                        sub.nbStudent(self.students)
                    ])
                start, end = len(data) - len(slot.subjects), len(data) - 1
                style.append(('SPAN', (0, start), (0, end)))
                style.append(('SPAN', (1, start), (1, end)))
                if i + 1 != len(day):
                    style.append(('SPAN', (0, end + 1), (-1, end + 1)))
                    data.append([''] * 5)
            table = Table(data)
            table.setStyle(TableStyle(style))
            story.append(table)
            story.append(PageBreak())
        doc.multiBuild(story)
Beispiel #18
0
    def printPdf(self, examName):
        for c in self.classrooms:
            if not c.empty():
                c.printPdf(examName, self.time_slot)

        # Teacher table
        filename = examName + '_' + self.time_slot[0] + '-' + str(
            self.time_slot[1]) + '_teacher' + '.pdf'
        doc = SimpleDocTemplate(filename,
                                pagesize=A4,
                                rightMargin=30,
                                leftMargin=30,
                                topMargin=30,
                                bottomMargin=18)
        doc.pagesize = portrait(A4)

        data = [[examName, ''], ['', '']]
        data[1][0] = self.time_slot[0] + ' ' + str(self.time_slot[1] // 100) + ':' +\
                str(self.time_slot[1] % 100) + ' to ' + str(self.time_slot[2] // 100) +\
                ':' + str(self.time_slot[2] % 100)

        style = [
            ('SPAN', (0, 0), (-1, 0)),
            ('SPAN', (0, 1), (-1, 1)),
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ]

        for c in self.classrooms:
            if not c.empty() and c.teacher:
                data.append(["Classroom : " + c.name, ""])
                style.append(('SPAN', (0, len(data) - 1), (-1, len(data) - 1)))
                data.append([
                    "TEACHER", c.teacher.lastname + ' ' + c.teacher.firstname
                ])
                for t in c.tas:
                    data.append([
                        'TA', t.lastname + ' ' + t.firstname + '\n(' +
                        t.roll_no + ')'
                    ])
                if len(c.tas) > 1:
                    style.append(('SPAN', (0, len(data) - len(c.tas)),
                                  (0, len(data) - 1)))
        table = Table(data)
        table.setStyle(TableStyle(style))
        doc.multiBuild([table])
Beispiel #19
0
def get_conf_pdf(conf):
    content = []

    title = Style['Title']
    title.fontName = 'song'

    info = Style['Normal']
    info.fontName = 'song'
    info.alignment = 1

    heading = Style['Normal']
    heading.fontName = 'song'
    heading.fontSize = 13
    heading.leading = 20

    bodytext = Style['BodyText']
    bodytext.fontName = 'song'
    bodytext.wordWrap = 'CJK'
    bodytext.firstLineIndent = 32

    content.append(Paragraph(conf.name, title))

    start_date = conf.date
    end_date = start_date + conf.duration
    info_text = str(start_date.date()) + '    ' + str(
        start_date.time()) + ' ~ ' + str(end_date.time()) + "\n" + conf.host
    content.append(Paragraph(info_text, info))

    if conf.introduction is not None:
        content.append(Paragraph('会议简介', heading))
        content.append(Paragraph(conf.introduction, bodytext))

    if conf.guest_intro is not None:
        content.append(Paragraph('嘉宾介绍', heading))
        content.append(Paragraph(conf.guest_intro, bodytext))

    if conf.remark is not None:
        content.append(Paragraph('备注', heading))
        content.append(Paragraph(conf.remark, bodytext))

    filename = 'static/pdfs/' + str(conf.id) + '_' + conf.name + '.pdf'
    filename = os.path.join(app.root_path, filename)
    pdf = SimpleDocTemplate(filename)
    pdf.multiBuild(content)

    return filename
Beispiel #20
0
 def multiBuild(self, story, filename=None, canvasMaker=Canvas, maxPasses=10, onFirstPage=_doNothing, onLaterPages=_doNothing):
     self._calc()    #in case we changed margins sizes etc
     frameT = Frame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
     self.addPageTemplates([PageTemplate(id='Later',frames=frameT, onPageEnd=onLaterPages,pagesize=self.pagesize)])
     if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
         self.pageTemplates[0].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self, story, maxPasses, canvasmaker=canvasMaker)
     self._prepareTOC()
     contentFile = self.filename
     self.filename = FileDummy()
     self.pageTemplates = []
     self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage,pagesize=self.pagesize)])
     if onFirstPage is _doNothing and hasattr(self,'onFirstPage'):
         self.pageTemplates[0].beforeDrawPage = self.onFirstPage
     self.addPageTemplates([PageTemplate(id='Later',frames=frameT, onPageEnd=self.laterPages,pagesize=self.pagesize)])
     if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
         self.pageTemplates[1].beforeDrawPage = self.onLaterPages
     SimpleDocTemplate.multiBuild(self, self._tocStory, maxPasses, canvasmaker=canvasMaker)
     self.mergePDFs(self.filename, contentFile)
Beispiel #21
0
def main():
    # setup arguments
    parser = argparse.ArgumentParser(description='Put description here')
    parser.add_argument('-o', '--outfile', help='PDF file', required="True")
    parser.add_argument('-t',
                        '--template',
                        help='Template file to write from',
                        required="True")
    parser.add_argument('-i',
                        '--image',
                        help='Inline image, usually used for a logo')
    args = parser.parse_args()

    pdf_file = SimpleDocTemplate(args.outfile,
                                 pagesize=letter,
                                 rightMargin=72,
                                 leftMargin=72,
                                 topMargin=72,
                                 bottomMargin=18)
    pdf = get_template(args)
    pdf_file.multiBuild(pdf)

    print("PDF File written to: ", args.outfile)
Beispiel #22
0
    def printPdf(self, exam_name, time_slot):
        filename = exam_name + '_' + time_slot[0] + '-' + str(
            time_slot[1]) + '_' + self.name + '.pdf'
        doc = SimpleDocTemplate(filename,
                                pagesize=A4,
                                rightMargin=30,
                                leftMargin=30,
                                topMargin=30,
                                bottomMargin=18)
        doc.pagesize = landscape(A4)

        # Classroom table
        data = [[''] * self.n_column for i in range(self.n_row + 3)]
        data[0][0] = exam_name
        data[1][0] = 'Classroom: ' + self.name + ' ' + time_slot[0] + ' ' + \
                str(time_slot[1] // 100) + ':' + str(time_slot[1] % 100) + ' to ' +\
                str(time_slot[2] // 100) + ':' + str(time_slot[2] % 100)
        for i in range(self.n_column):
            data[2][i] = 'C' + str(i + 1)

        for i in range(self.n_row):
            for j in range(self.n_column):
                if self.map_student[i][j]:
                    data[i + 3][j] = self.map_student[i][j].roll_no

        style = TableStyle([
            ('SPAN', (0, 0), (-1, 0)),
            ('SPAN', (0, 1), (-1, 1)),
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ])
        table = Table(data)
        table.setStyle(style)
        doc.multiBuild([table])
Beispiel #23
0
def contrato_maestro_pmoral_pdf(request):
    # Get the information for the contract
    cliente = Cliente.objects.get(pk=3)
    # documentacion = Documentacion_PMoral.objects.get(pk=pk_docu)
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    pdf_name = "clientes.pdf"
    buff = BytesIO()
    doc = SimpleDocTemplate(
        buff,
        pagesize=letter,
        rightMargin=40,
        leftMargin=40,
        topMargin=60,
        bottomMargin=45,
    )
    PAGE_HEIGHT = letter[1]
    PAGE_WIDTH = letter[0]
    # Our container for 'Flowable' objects
    elements = []

    # A large collection of style sheets pre-made for us
    styles = getSampleStyleSheet()

    # Set some styles for paragraphs
    styles.add(
        ParagraphStyle(name='RightAlign', fontSize=10, alignment=TA_RIGHT))
    styles.add(ParagraphStyle(name='CenterAlign', alignment=TA_CENTER))
    styles.add(ParagraphStyle(name='LeftAlign', alignment=TA_LEFT))
    styles.add(ParagraphStyle(name='Justified', alignment=TA_JUSTIFY))

    # Set some styles for tables
    Cuadricula = TableStyle([
        ('GRID', (0, 0), (-1, -1), 0.25, colors.blue),
        ('BOX', (0, 0), (-1, -1), 0.50, colors.blue),
        ('ALIGN', (1, 1), (-1, -1), 'RIGHT'),
        ('VALIGN', (0, 0), (-1, -1), 'TOP'),
    ])

    # Start to write document
    elements.append(Paragraph("Contrato No. 349", styles['RightAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph("CONTRATO MAESTRO DE ARRENDAMIENTO DE EQUIPO",
                  styles['CenterAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """CONTRATO MAESTRO DE ARRENDAMIENTO DE EQUIPO (EL "CONTRATO DE ARRENDAMIENTO
                                OPERATIVO Y/O ARRENDAMIENTO MAESTRO") DE FECHA 27 DE ABRIL DE 2017 QUE
                                CELEBRAN ARRENDADORA AVANCE, SA. DE C.V.  COMO EL "ARRENDADOR", Y LAS PERSONAS
                                FISICAS Y/O MORALES QUE A CONTINUACION SE SENALAN COMO "ARRENDATARIO", DE
                                ACUERDO CON LAS SIGUIENTES DECLARACIONES Y CLAUSULAS:""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("P R O E M I O:", styles['CenterAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("A) EL ARRENDATARIO", styles['LeftAlign']))
    elements.append(Spacer(1, 0.3 * inch))

    colwidths = (PAGE_WIDTH - (3.3 * inch), 2 * inch)
    rowheights = (0.3 * inch)
    data = ((cliente.Nombre_Empresa, "RFC: " + cliente.RFC), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (PAGE_WIDTH - (1.3 * inch), )
    data = (("Escritura constitutiva de EL ARRENDATARIO:", ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    x = PAGE_WIDTH - (1.3 * inch)
    colwidths = (x / 6, x / 6, x / 6, x / 6, x / 3)
    rowheights = (0.8 * inch)
    data = ((
        Paragraph("Escritura Constitutiva No.99,286", styles['LeftAlign']),
        Paragraph(
            """Ante el Licenciado: Luis Felipe del Valle
                        Prieto Ortega""", styles['LeftAlign']),
        Paragraph("Notario Público No. 20 de la Ciudad de México",
                  styles['LeftAlign']),
        Paragraph("Escritura de fecha: 10 de Febrero de 1992",
                  styles['LeftAlign']),
        Paragraph(
            """Inscrita en el Registro Público de Comercio (RPPC) de:
                        Tlalnepantla, Estado de México""",
            styles['LeftAlign']),
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (x / 3, x * 2 / 3)
    rowheights = (0.4 * inch)
    data = ((
        Paragraph("Fecha de Inscripción en el RPPC: 26 de Junio de 1992",
                  styles['LeftAlign']),
        Paragraph(
            """Datos de Registro: Partida 359, Volúmen 23,
              Libro Primero de Comercio""", styles['LeftAlign']),
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (x / 6, x * 5 / 6)
    data = ((
        Paragraph("Poder de su representante:", styles['LeftAlign']),
        Paragraph("NOMBRE DEL REPRESENTANTE LEGAL:  René Ramiro Pacheco Ortiz",
                  styles['LeftAlign']),
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (x / 6, x / 6, x / 6, x / 6, x / 3)
    rowheights = (0.8 * inch)
    data = ((
        Paragraph("Escritura Constitutiva No.99,286", styles['LeftAlign']),
        Paragraph("Ante el Licenciado: Luis Felipe del Valle Prieto Ortega",
                  styles['LeftAlign']),
        Paragraph("Notario Público No. 20 de la Ciudad de México",
                  styles['LeftAlign']),
        Paragraph("Escritura de fecha: 10 de Febrero de 1992",
                  styles['LeftAlign']),
        Paragraph(
            "Inscrita en el Registro Público de Comercio (RPPC) de: Tlalnepantla, Estado de México",
            styles['LeftAlign']),
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (x / 3, x * 2 / 3)
    rowheights = (0.4 * inch)
    paragraphs = []
    info3 = Paragraph("Datos de Registro:", styles['LeftAlign'])
    info4 = Paragraph("Partida 359, Volúmen 23, Libro Primero de Comercio",
                      styles['LeftAlign'])
    paragraphs.append(info3)
    paragraphs.append(info4)
    data = ((
        Paragraph("Fecha de Inscripción en el RPPC: 26 de Junio de 1992",
                  styles['LeftAlign']),
        paragraphs,
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    colwidths = (PAGE_WIDTH - (1.3 * inch), )
    rowheights = (0.3 * inch)
    data = ((
        "Domicilio: Avenida de los Frailes 10, Colonia San Andrés Atenco Ampliación, Municipio Tlalnepantla de Baz, C.P. 54040, Estado de México",
    ), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    elements.append(Spacer(1, 0.3 * inch))
    elements.append(Paragraph("B) EL OBLIGADO SOLIDARIO", styles['LeftAlign']))
    elements.append(Spacer(1, 0.3 * inch))
    colwidths = (x / 2, x / 2)
    rowheights = (0.28 * inch)
    data = (
        (Paragraph("Nombre: René Ramiro Pacheco Ortiz", styles['LeftAlign']),
         Paragraph("Nacionalidad: Mexicana", styles['LeftAlign'])),
        (Paragraph("Originario de: Guanajuato", styles['LeftAlign']),
         Paragraph("Fecha de Nacimiento: 06 de Enero de 1950",
                   styles['LeftAlign'])),
        (Paragraph("Tipo de ID: IFE: 0877008103318", styles['LeftAlign']),
         Paragraph("Caducidad de la ID: 2021", styles['LeftAlign'])),
    )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    rowheights = (0.7 * inch)
    data = ((Paragraph("RFC: PAOR500106V63", styles['LeftAlign']),
             Paragraph(
                 """Domicilio: Puerta de Hierro 21, Fraccionamiento
                       Campestre del Lago, Municipio Cuautitlán Izcalli, C.P.
                       54766, Estado de México""", styles['LeftAlign'])), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    elements.append(Spacer(1, 0.3 * inch))
    elements.append(Paragraph("C) EL DEPOSITARIO:", styles['LeftAlign']))
    elements.append(Spacer(1, 0.3 * inch))
    colwidths = (x / 2, x / 2)
    rowheights = (0.28 * inch)
    data = (
        (Paragraph("Nombre: René Ramiro Pacheco Ortiz", styles['LeftAlign']),
         Paragraph("Nacionalidad: Mexicana", styles['LeftAlign'])),
        (Paragraph("Originario de: Guanajuato", styles['LeftAlign']),
         Paragraph("Fecha de Nacimiento: 06 de Enero de 1950",
                   styles['LeftAlign'])),
        (Paragraph("Tipo de ID: IFE: 0877008103318", styles['LeftAlign']),
         Paragraph("Caducidad de la ID: 2021", styles['LeftAlign'])),
    )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    rowheights = (0.7 * inch)
    data = ((Paragraph("RFC: PAOR500106V63", styles['LeftAlign']),
             Paragraph(
                 """Domicilio: Puerta de Hierro 21, Fraccionamiento
                        Campestre del Lago, Municipio Cuautitlán Izcalli, C.P.
                        54766, Estado de México""", styles['LeftAlign'])), )
    t = Table(data, colwidths, rowheights, hAlign='LEFT')
    t.setStyle(Cuadricula)
    elements.append(t)
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("DECLARACIONES", styles['CenterAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph("I. El Arrendador declara, representa y garantiza que:",
                  styles['LeftAlign']))
    elements.append(
        Paragraph(
            """(a) Es una sociedad anónima de capital variable debidamente constituida de conformidad
                                 con  las leyes de los Estados Unidos Mexicanos (“México”), según consta en la escritura
                                 pública Número 102,858 de fecha 07 de junio de 2004, otorgada ante la fe del Licenciado
                                 Cecilio González Márquez, Titular de la Notaria Pública Número 151 de la Ciudad de México,
                                 debidamente inscrita el Registro Público de la Propiedad y del Comercio de la Ciudad de
                                 México, con fecha 19 de agosto de 2004, bajo el Folio Mercantil Número 323641.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(b) Su objeto social es la compra, venta y arrendamiento de toda clase de bienes
                                 muebles y la prestación de servicios relacionados con los mismos, y por tanto,
                                 está autorizada a celebrar este Contrato de Arrendamiento Operativo.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(c) Sujeto a la suscripción del Anexo de Arrendamiento (según dicho término se define
                                 más adelante) que corresponda, está dispuesto a adquirir del proveedor, distribuidor,
                                 vendedor, fabricante o constructor que le indique el Arrendatario, el Equipo (según
                                 dicho término se define más adelante) descrito en los Anexos de Arrendamiento del
                                 presente, con el propósito de dar en arrendamiento dicho Equipo al Arrendatario,
                                 de conformidad a los términos y condiciones establecidos en el presente Contrato de
                                 Arrendamiento Operativo y los Anexos de Arrendamiento.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(d) Su representante cuenta con el poder y la capacidad necesaria para celebrar
                                 este Arrendamiento Maestro, según consta en la escritura Número 191,574 de fecha
                                 19 de agosto de 2016, otorgada ante la fe del Licenciado Cecilio González Márquez,
                                 Titular de la Notaria Pública Número 151 de la Ciudad de México.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(e) Que su domicilio es el ubicado en: Cracovia 72 BIS, PO18,  Nivel 3, Torre B,
                                 Col. San Ángel, Álvaro Obregón,  Ciudad de México, C.P. 01000""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """II. El Arrendatario  declara, representa y garantiza que:""",
            styles['LeftAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(a) Cuenta con todas las facultades necesarias para celebrar el presente
                                 Contrato de acuerdo a sus términos y condiciones.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(b) Se encuentra al corriente en el pago de todos los impuestos, derechos,
                                 contribuciones y demás obligaciones a su cargo, así como en los convenios
                                 de los cuales forma parte; """,
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(c) Es su deseo tomar en arrendamiento del Arrendador el Equipo descrito
                                 en los Anexos de Arrendamiento del presente, de conformidad con los términos
                                 y condiciones establecidos en el presente Contrato de Arrendamiento Operativo
                                 y los Anexos de Arrendamiento.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(d) Ha seleccionado el Equipo basado en su propio juicio y expresamente niega
                                 haberse basado en declaraciones hechas por el Arrendador.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(e)  Declara que no participa en huelgas, no está en concurso mercantil o
                                 procedimientos similares que pudieran afectar su condición financiera.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(f)  Declara que desde la fecha de la presentación de los estados financieros,
                                 estados de cuenta y/o declaraciones de impuestos (según le corresponda), cuya
                                 copia ha sido entregada a el Arrendador, a la fecha de la firma de este
                                 Contrato y del Anexo de Arrendamiento que Corresponda, no ha ocurrido cambio
                                 alguno que afecte en forma adversa en su situación financiera.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(g) En su caso, ser persona moral constituida de conformidad a las leyes de
                                 México según consta en el instrumento público descrito en el proemio del
                                 presente contrato, así mismo manifiesta que  su representante Legal cuenta
                                 con el poder y la capacidad necesaria para celebrar este Contrato de Arrendamiento
                                 Operativo así como cualquiera de sus Anexos de Arrendamiento, y  que las facultades
                                 que le fueron conferidas no le han sido de ninguna forma revocadas o limitadas.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(h) En términos de la Ley Federal de Protección de Datos Personales en Posesión
                                 de los Particulares y su Reglamento, el Arrendatario declara o en caso de ser
                                 persona moral su(s) apoderado(s) legal(es) declara(n) que ha(n) tenido a su
                                 disposición el aviso de privacidad del Arrendador y su respectivo contenido,
                                 el cual se le(s) ha dado a conocer previamente a la celebración del presente
                                 Contrato de Arrendamiento Operativo y que se encuentra para su consulta en la
                                 página web http://www.arrendadoraavance.com.mx/cotizador/aviso_privacidad.pdf/ ,
                                 por lo que en este acto otorga(n) su consentimiento al Arrendador para el
                                 tratamiento de sus datos personales en términos de dicho aviso de privacidad.
                                 De igual manera reconoce(n) que podrá(n) verificar en dicha página, cualquier
                                 cambio en el mencionado aviso de privacidad.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """III. El Obligado Solidario y/o el Fiador declara, representa y garantiza que:""",
            styles['LeftAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(a) Cuenta con todas las facultades necesarias para celebrar el presente
                                 Contrato de acuerdo a sus términos y condiciones; """,
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(b) Se encuentra al corriente en el pago de todos los impuestos, derechos,
                                 contribuciones y demás obligaciones a su cargo, así como en los convenios
                                 de los cuales forma parte;""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(c) Es su deseo obligarse solidariamente y garantizar todas las obligaciones
                                 del Arrendatario en el presente Arrendamiento Maestro y sus Anexos de
                                 Arrendamiento.""", styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(d) El Fiador garantiza el cumplimiento de las obligaciones contraídas
                                 respecto del  presente Arrendamiento Maestro a cargo del Arrendatario,
                                 y las que a la fecha de firma del mismo y en el futuro se puedan derivar
                                 de la firma de sus respectivos Anexos de Arrendamiento, por lo que el
                                 Fiador renunciando expresamente a los beneficios de división orden y
                                 exclusión y a lo dispuesto en el artículo 1851 y 2487 del Código Civil
                                 o a establecer requisitos o condiciones a el Arrendador para que este
                                 pueda reclamar el cumplimiento de pago de las obligaciones contraídas
                                 bajo el Arrendamiento.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(e) Cuenta con los recursos económicos suficientes para dar cumplimiento
                                 a todas y cada una de las obligaciones, en especial las de pago, que
                                 derivan del presente Arrendamiento Maestro a cargo del Arrendatario, y
                                 las que a la fecha de firma del mismo y en el futuro se puedan derivar
                                 de la firma de sus respectivos Anexos de Arrendamiento.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(f) Declara que no participa en huelgas, no está en concurso mercantil
                                 o procedimientos similares que pudieran afectar su condición financiera.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(g) Declara que desde la fecha de presentación de los estados financieros,
                                 estados de cuenta y/o declaraciones de impuestos (según le corresponda),
                                 cuya copia ha sido entregada a el Arrendador, a la fecha de la firma de
                                 este Contrato y del Anexo de Arrendamiento que Corresponda, no ha ocurrido
                                 cambio alguno que afecte en forma adversa en su situación financiera.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(h) En su caso, ser persona moral constituida de conformidad a las leyes de
                                 México según consta en el instrumento público descrito en el proemio del
                                 presente contrato, así mismo manifiesta que  su representante legal cuenta
                                 con el poder y la capacidad necesaria para celebrar este Contrato de
                                 Arrendamiento Operativo así como cualquiera de sus Anexos de Arrendamiento,
                                 y  que las facultades que le fueron conferidas no le han sido de ninguna
                                 forma revocadas o limitadas.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """(i) En términos de la Ley Federal de Protección de Datos Personales en
                                 Posesión de los Particulares y su Reglamento, declaran o en caso de ser
                                 persona moral su(s) apoderado(s) legal(es) declara(n) que ha(n) tenido a
                                 su disposición el aviso de privacidad del Arrendador y su respectivo
                                 contenido, el cual se le ha dado a conocer previamente a la celebración
                                 del presente Contrato de Arrendamiento Operativo y que se encuentra para
                                 su consulta en la página web
                                 http://www.arrendadoraavance.com.mx/cotizador/aviso_privacidad.pdf/ ,
                                 por lo que en este acto otorga(n) su consentimiento al Arrendador para
                                 el tratamiento de sus datos personales en términos de dicho aviso de
                                 privacidad. De igual manera reconoce(n) que podrá(n) verificar en dicha
                                 página, cualquier cambio en el mencionado aviso de privacidad.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """IV. El “DEPOSITARIO” declara, representa y garantiza que:""",
            styles['LeftAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """a) Cuenta con la capacidad necesaria para celebrar este Contrato de
                                 Arrendamiento Operativo y obligarse en sus términos.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """b) Protesta su legal y fiel desempeño a título gratuito, renunciando expresamente
                                 a percibir cualquier retribución al desempeño de su cargo, así como cualquier
                                 reembolso de gastos que por el desempeño de su cargo tenga que desembolsar,
                                 haciéndose sabedor de las responsabilidades civiles y penales en que incurren
                                 los depositarios sobre todo si se dispusieran de cualquiera de los bienes que
                                 recibe en su carácter de depositario.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """c) Es su deseo constituirse como depositario del Equipo objeto del presente
                                 contrato.""", styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """d) En términos del presente Contrato de Arrendamiento Operativo el “DEPOSITARIO”
                                 se compromete y obliga frente a  “El Arrendador” a hacerle entrega del Equipo
                                 en caso de presentarse un incumplimiento de “El Arrendatario” y siempre y
                                 cuando medie un requerimiento por escrito de “El Arrendador”  por lo que el
                                 “DEPOSITARIO” reconoce y acepta todas las obligaciones y responsabilidades
                                 civiles y penales que la legislación mexicana le establece en su calidad de
                                 “DEPOSITARIO”.""", styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """e) En términos de la Ley Federal de Protección de Datos Personales en
                                 Posesión de los Particulares y su Reglamento, declara que ha tenido a
                                 su disposición el aviso de privacidad del Arrendador y su respectivo
                                 contenido, el cual se le ha dado a conocer previamente a la celebración
                                 del presente Contrato de Arrendamiento Operativo y que se encuentra para
                                 su consulta en la página web
                                 http://www.arrendadoraavance.com.mx/cotizador/aviso_privacidad.pdf , por lo
                                 que en este acto otorga su consentimiento al Arrendador para el tratamiento
                                 de sus datos personales en términos de dicho aviso de privacidad. De igual
                                 manera reconoce que podrá verificar en dicha página, cualquier cambio en
                                 el mencionado aviso de privacidad.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """Conformes las partes con las Declaraciones que anteceden, convienen en las
                                 siguientes:""", styles['LeftAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("""CLAUSULAS""", styles['CenterAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("""PRIMERA. DEFINICIONES""",
                              styles['LeftAlign']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """Salvo que el contexto de una frase lo requiera de otra forma, los términos
                                 que a continuación se mencionan y que sean escritos con inicial mayúscula a
                                 lo largo del presente Contrato de Arrendamiento Operativo y los Anexos de
                                 Arrendamiento, tendrán los siguientes significados, independientemente que
                                 se utilicen en singular o plural, y las palabras en género masculino se
                                 entenderán en género femenino y viceversa:""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """"Anexo de Arrendamiento" significará, cada uno de los documentos
                                 (en forma substancialmente igual a lo contenido en el anexo “A” del
                                 presente) que las partes suscriban en uno o sucesivos actos durante
                                 la vigencia del presente Contrato de Arrendamiento Maestro operativo
                                 y que contendrá la descripción del Equipo, así como todas las características
                                 del mismo, incluyendo el Certificado de Aceptación (según se define en
                                 el Arrendamiento Maestro) en la inteligencia de que cada Anexo de Arrendamiento
                                 se numerará progresivamente en forma sucesiva y se sujetará a los términos
                                 y condiciones en el presente Contrato de Arrendamiento Operativo.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Código Civil Aplicable”, significará el Código Civil para el Distrito
                                 Federal.""", styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Código Procesal Aplicable”, significará el Código de Procedimientos
                                 Civiles para el Distrito Federal """,
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Contrato de Arrendamiento Operativo” y/o “Arrendamiento Maestro,
                                 es el contrato atípico e innominado por virtud del cual una persona
                                 moral especializada llamada arrendador otorga el uso y goce temporal
                                 de un bien mueble por plazo determinado y forzoso, a una persona física
                                 o moral llamada arrendatario la cual se obliga a pagar una contraprestación
                                 en dinero o en especie llamada renta. """,
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Día Hábil”, significará cualquier día en el cual los bancos estén abiertos
                                 para realizar operaciones bancarias ordinarias en la Ciudad de México, México
                                 y en la Ciudad de Nueva York, Nueva York, Estados Unidos de América.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Equipo”, significará el o los bienes y, en general conjuntamente, todos
                                 los activos que se describan en cada uno de los Anexos de Arrendamiento,
                                 y que son arrendados conforme a dicho Anexo de Arrendamiento y al presente,
                                 incluyendo todos los repuestos, partes, reparaciones, adiciones, agregados
                                 y accesorios que sean incorporados al mismo, ya sea que hayan sido hechos
                                 por el Arrendador o por el Arrendatario. Cualquier referencia u obligación
                                 respecto al Equipo se entenderá en todos los casos como un todo,
                                 independientemente del o los bienes y el o los activos descritos en el
                                 Anexo de Arrendamiento que corresponda.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Fecha de Inicio” significará la fecha en que el Plazo Básico Forzoso
                                 de un Anexo de Arrendamiento comience, en la inteligencia de que dicha
                                 fecha será la que se establezca en el Anexo de Arrendamiento respectivo.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph("""“IVA”, significará el Impuesto al Valor Agregado.""",
                  styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Pagos Periódicos”, significará los pagos parciales y consecutivos, que para
                                 efecto de conveniencia, el Arrendatario efectuará por concepto de la Renta,
                                 durante los periodos convenidos por las partes en los términos del Anexo de
                                 Arrendamiento que corresponda. """,
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Plazo Básico Forzoso”, significará el plazo durante el cual cualquier Anexo
                                 de Arrendamiento del presente Contrato de Arrendamiento Operativo estará en
                                 vigor, el cual comenzará en la Fecha de Inicio.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Reducciones”, significará cualquier retención, reducción, compensación,
                                 defensa, contrademanda o reconvención, no importa cómo se designe o la
                                 razón de la misma.""", styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Renta”, significará la cantidad total que el Arrendatario deberá pagar
                                 al Arrendador por el arrendamiento del Equipo, tal y como se convenga en
                                 cada Anexo de Arrendamiento de Equipo, más el IVA en vigor.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Software” tiene el significado atribuido a dicho término en la Cláusula
                                 Vigésima de este Contrato de Arrendamiento Operativo.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """“Administración de arrendamiento” significará el pago distinto a las Rentas
                                 de los equipos y que el Arrendatario se obliga a pagar al Arrendador,
                                 incluyendo sin que sea limitativo, gastos de mantenimiento,  alta y baja de
                                 placas,  seguros, impuestos mismo que deberá ser cubierto a más tardar a
                                 los 5 (cinco) días naturales a partir de la solicitud del Arrendador.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(
        Paragraph(
            """Todas las cantidades a que se haga referencia en este Contrato de
                                 Arrendamiento Operativo y cualquier Anexo de Arrendamiento serán en pesos,
                                 moneda de curso legal de los Estados Unidos Mexicanos.""",
            styles['Justified']))
    elements.append(Spacer(1, 0.2 * inch))
    elements.append(Paragraph("""""", styles['Justified']))

    doc.multiBuild(elements, canvasmaker=ContratoCanvas)
    response.write(buff.getvalue())
    buff.close()
    return response
Beispiel #24
0
        ('LINEBEFORE', (0, 0), (0, -1), 0.1,
         colors.grey),  # 设置表格左边线颜色为灰色,线宽为0.1
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.royalblue),  # 设置表格内文字颜色
        ('TEXTCOLOR', (0, -1), (-1, -1), colors.red),  # 设置表格内文字颜色
        ('GRID', (0, 0), (-1, -1), 0.5, colors.grey),  # 设置表格框线为grey色,线宽为0.5
    ]

    component_table = Table(dis_list, colWidths=colWidths, style=style)

    return component_table


Style = getSampleStyleSheet()
n = Style['Normal']
data = [
    [0, 1, 2, 3, 4, 5, 6, 7],
    [00, 11, 22, 33, 44, 55, 66, 77],
    [000, 111, 222, 333, 444, 555, 666, 777],
    [0000, 1111, 2222, 3333, 4444, 5555, 6666, 7777],
]

z = table_model(data)
my_str = u'''人这一生,选择往往比努力更重要!'''
my_str1 = u"哈哈,恭喜,你成功了一半"
t = Paragraph(my_str, bt)
t1 = Paragraph(my_str1, bt)

pdf = SimpleDocTemplate('ppff.pdf')

pdf.multiBuild([t, t1, Paragraph('Title', n), z])
Beispiel #25
0
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, SimpleDocTemplate
from reportlab.lib import colors

Style = getSampleStyleSheet()

bt = Style['Normal']  #字体的样式
# bt.fontName='song'    #使用的字体
bt.fontSize = 14  #字号
bt.wordWrap = 'CJK'  #该属性支持自动换行,'CJK'是中文模式换行,用于英文中会截断单词造成阅读困难,可改为'Normal'
bt.firstLineIndent = 32  #该属性支持第一行开头空格
bt.leading = 20  #该属性是设置行距

ct = Style['Normal']
# ct.fontName='song'
ct.fontSize = 12
ct.alignment = 1  #居中

ct.textColor = colors.red

t = Paragraph('This', bt)
pdf = SimpleDocTemplate('ppff.pdf')
pdf.multiBuild([t])
# Send the data and build the file
#elements.append(Spacer(1, 0.2 * inch))
#elements.append()
elements.append(Paragraph("Per Acre", style1))
elements.append(table)
elements.append(Spacer(1, 0.29 * inch))
elements.append(Paragraph("Total Value", style1))
elements.append(table1)
elements.append(Spacer(1, 0.29 * inch))
elements.append(
    Paragraph(
        '<u>Note</u>:Both appraisers used 42 net acres as per the AOC.'
        ' Tim Sheehan rounded the total values.', styleN))
elements.append(Image('pic2.jpg', 8 * inch, 9 * inch))
elements.append(Paragraph("FARMLAND PRESERVATION PROGRAM NJ SADC", styleH))
elements.append(PageBreak())
elements.append(Image('pic2.jpg', 8 * inch, 9 * inch))
elements.append(Paragraph("FARMLAND PRESERVATION PROGRAM NJ SADC", styleH))
elements.append(Spacer(1, 0.5 * inch))
elements.append(PageBreak())
elements.append(Paragraph("Reviewers Comments", styleH))
elements.append(PageBreak())
elements.append(Paragraph("Certification Report", styleH))
elements.append(Spacer(1, 0.9 * inch))
elements.append(table3)
#elements.append(table1)
#elements.append(table1_with_style)
#doc.build(elements)
doc.multiBuild(elements, canvasmaker=FooterCanvas)
Beispiel #27
0
#pdfmetrics.registerFont(TTFont('song', r"C:\score_learn\python27\source_code\python27\GB2312.ttf"))
pdfmetrics.registerFont(TTFont('song', r"C:\tools\ziti\GB2312.ttf"))

from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, SimpleDocTemplate
from reportlab.lib import colors

Style = getSampleStyleSheet()

bt = Style['Normal']  #字体的样式
bt.fontName = 'song'  #使用的字体
bt.fontSize = 10  #字号
bt.wordWrap = 'CJK'  #该属性支持自动换行,CJK是中文模式下换行,用于英文会截断单词造成阅读困难,可以改成'Noraml'
bt.firstLineIndent = 2  #该属性支持第一行开头空格
bt.leading = 20  #该属性是设置行距

ct = Style['Normal']
# ct.fontName='song'
ct.fontSize = 12
ct.alignment = 0  #居中

ct.textColor = colors.red

my_str = u'''人这一生,选择往往比努力更重要!'''
my_str1 = u"哈哈,恭喜,你成功了一半"
t = Paragraph(my_str, bt)
t1 = Paragraph(my_str1, bt)
pdf = SimpleDocTemplate('ppff.pdf')
pdf.multiBuild([t, t1])
Beispiel #28
0
def profit_loss_pdf(pdf_name, company_name, company_address, revenue,
                    cost_of_goods, total_salary, rental, office_supply,
                    insurance, utilities, maintanence, telecommunication):
    doc = SimpleDocTemplate(pdf_name,
                            rightMargin=72,
                            leftMargin=72,
                            topMargin=72,
                            bottomMargin=18)

    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
    styles.add(ParagraphStyle('Center', alignment=TA_LEFT, leftIndent=130))
    styles.add(ParagraphStyle('one', alignment=TA_RIGHT, rightIndent=20))
    styles.add(ParagraphStyle('two', alignment=TA_JUSTIFY, leftIndent=300))
    styles.add(ParagraphStyle('t1', alignment=TA_JUSTIFY, leftIndent=200))
    styles.add(ParagraphStyle('left', alignment=TA_LEFT))
    line = MCLine(410)
    logo = "jibby.png"
    im = Image(logo, 1.3 * inch, 1 * inch)
    Story = []
    ptext = '<font size=10><b>%s</b><br/>%s</font>' % (company_name,
                                                       company_address)
    ptext_1 = Paragraph(ptext, styles['left'])

    able = [[ptext_1, '', im], ['', '', ''], ['', '', '']]
    t = Table(able, (5 * cm, 7 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 1.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 1.50, colors.black),
        ]))
    Story.append(t)
    ptext3 = '<font size=13><b><u>Profit & Loss Statement for Jibby and Co</u></b></font>'
    ptext_3 = Paragraph(ptext3, styles['left'])
    Story.append(ptext_3)
    Story.append(Spacer(1, 11))
    Story.append(Spacer(1, 11))
    ptext1 = '<font size=11><b>Total Revenue</b></font>'
    ptext_1 = Paragraph(ptext1, styles['left'])
    ptext2 = '<font size=10>%s</font>' % str("{:,}".format(revenue))
    ptext_2 = Paragraph(ptext2, styles['one'])
    ptext4 = '<font size=11>Cost of Goods Sold</font>'
    ptext_4 = Paragraph(ptext4, styles['left'])
    ptext3 = '<font size=10>(%s)</font>' % str("{:,}".format(cost_of_goods))
    ptext_3 = Paragraph(ptext3, styles['one'])
    able = [[ptext_1, '', ptext_2], [ptext_4, '', ptext_3], ['', '', '']]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(line)
    gross_profit = revenue - cost_of_goods
    ptext = '<font size=11><b>Gross Profit </b></font>'
    ptext_1 = Paragraph(ptext, styles['left'])
    ptext2 = '<font size=10>%s</font>' % str("{:,}".format(gross_profit))
    ptext_2 = Paragraph(ptext2, styles['one'])
    able = [[ptext_1, '', ptext_2]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(line)
    ptext5 = '<font size=11><b>Operating Expenses</b></font>'
    ptext_5 = Paragraph(ptext5, styles['left'])
    ptext6 = '<font size=10>Salaries, Benefit and Wages</font>'
    ptext_6 = Paragraph(ptext6, styles['left'])
    ptext7 = '<font size=10>(%s)</font>' % str("{:,}".format(total_salary))
    ptext_7 = Paragraph(ptext7, styles['one'])
    ptext8 = '<font size=10>Rent</font>'
    ptext_8 = Paragraph(ptext8, styles['left'])
    ptext9 = '<font size=10>(%s)</font>' % str("{:,}".format(rental))
    ptext_9 = Paragraph(ptext9, styles['one'])
    ptext10 = '<font size=10>Office Supplies</font>'
    ptext_10 = Paragraph(ptext10, styles['left'])
    ptext11 = '<font size=10>(%s)</font>' % str("{:,}".format(office_supply))
    ptext_11 = Paragraph(ptext11, styles['one'])
    ptext12 = '<font size=10>Insurance </font>'
    ptext_12 = Paragraph(ptext12, styles['left'])
    ptext13 = '<font size=10>(%s)</font>' % str("{:,}".format(insurance))
    ptext_13 = Paragraph(ptext13, styles['one'])
    ptext14 = '<font size=10>Utilities </font>'
    ptext_14 = Paragraph(ptext14, styles['left'])
    ptext15 = '<font size=10>(%s)</font>' % str("{:,}".format(utilities))
    ptext_15 = Paragraph(ptext15, styles['one'])
    ptext16 = '<font size=10>Maintanence </font>'
    ptext_16 = Paragraph(ptext16, styles['left'])
    ptext17 = '<font size=10>(%s)</font>' % str("{:,}".format(maintanence))
    ptext_17 = Paragraph(ptext17, styles['one'])
    ptext18 = '<font size=10>Telecommunication </font>'
    ptext_18 = Paragraph(ptext18, styles['left'])
    ptext19 = '<font size=10>(%s)</font>' % str(
        "{:,}".format(telecommunication))
    ptext_19 = Paragraph(ptext19, styles['one'])
    able = [['', '', ''], [ptext_5, '', ''], [ptext_6, '', ptext_7],
            [ptext_8, '', ptext_9], [ptext_10, '', ptext_11],
            [ptext_12, '', ptext_13], [ptext_14, '', ptext_15],
            [ptext_16, '', ptext_17], [ptext_18, '', ptext_19]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            #('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            #('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(Spacer(1, 11))
    Story.append(line)
    total_expenses = total_salary + rental + office_supply + insurance + utilities + maintanence + telecommunication
    ptext = '<font size=11>Total Expenses</font>'
    ptext_1 = Paragraph(ptext, styles['left'])
    ptext2 = '<font size=10>(%s)</font>' % str("{:,}".format(total_expenses))
    ptext_2 = Paragraph(ptext2, styles['one'])
    able = [[ptext_1, '', ptext_2]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(line)
    profit_before_tax = gross_profit - total_expenses
    ptext = '<font size=11><b>Profit Before Tax </b></font>'
    ptext_1 = Paragraph(ptext, styles['left'])
    ptext2 = '<font size=10>%s</font>' % str("{:,}".format(profit_before_tax))
    ptext_2 = Paragraph(ptext2, styles['one'])
    able = [[ptext_1, '', ptext_2]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(Spacer(1, 11))
    income_tax = int(profit_before_tax * 0.19)
    ptext = '<font size=10>Income Taxes </font>'
    ptext_1 = Paragraph(ptext, styles['left'])
    ptext2 = '<font size=10>%s</font>' % str("{:,}".format(income_tax))
    ptext_2 = Paragraph(ptext2, styles['one'])
    able = [[ptext_1, '', ptext_2]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(line)
    net_profit = profit_before_tax - income_tax
    ptext = '<font size=10><b>Net Profit</b> </font>'
    ptext_1 = Paragraph(ptext, styles['left'])
    ptext2 = '<font size=10>%s</font>' % str("{:,}".format(net_profit))
    ptext_2 = Paragraph(ptext2, styles['one'])
    able = [[ptext_1, '', ptext_2]]
    t = Table(able, (8 * cm, 2 * cm, 5 * cm))
    t.setStyle(
        TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            # ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            # ('BOX', (0, 0), (-1, -1), 0.50, colors.black),
        ]))
    Story.append(t)
    Story.append(line)
    doc.multiBuild(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)
def rl_build(rl_object_list, file_path='output\\temp.pdf'):
    pdf = SimpleDocTemplate(file_path)
    pdf.multiBuild(rl_object_list)
Beispiel #30
0
    return component_table


Style = getSampleStyleSheet()
n = Style['Normal']

data = [
    [0, 1, 2, 3, 4, 5, 6, 7],
    [00, 11, 22, 33, 44, 55, 66, 77],
    [000, 111, 222, 333, 444, 555, 666, 777],
    [0000, 1111, 2222, 3333, 4444, 5555, 6666, 7777],
]

z = table_model(data)
pdf = SimpleDocTemplate('ppff.pdf')
pdf.multiBuild([Paragraph('Title', n), z])
'''
Style = getSampleStyleSheet()
bt = Style['Normal']
bt.fontSize = 14
bt.leading = 20

ct = Style['Normal']
ct.fontSize = 12
ct.leading = 20

ct.textColor = colors.red

t = Paragraph('hello',bt)
pdf = SimpleDocTemplate('ppff.pdf')
pdf.multiBuild([t])
Beispiel #31
0
    pie.simpleLabels = 0 # 0 标签在标注线的右侧;1 在线上边
    pie.sameRadii = 1    # 0 饼图是椭圆;1 饼图是圆形

    pie.slices.strokeColor = colors.red       # 圆饼的边界颜色
    pie.strokeWidth=1                         # 圆饼周围空白区域的宽度
    pie.strokeColor= colors.white             # 整体饼图边界的颜色
    pie.slices.label_pointer_piePad = 10       # 圆饼和标签的距离
    pie.slices.label_pointer_edgePad = 25    # 标签和外边框的距离
    pie.width = width
    pie.direction = 'clockwise'
    pie.pointerLabelMode  = 'LeftRight'
    # for i in range(len(labels)):
    #     pie.slices[i].fontName = 'song' #设置中文
    for i, col in enumerate(use_colors):
         pie.slices[i].fillColor  = col
    return pie


data = [10,9,8,7,6,5,4,3,2,1]
labs = ['0000000','1111111','2222222','3333333','4444444',
        '5555555','6666666','7777777','8888888','9999999']
color = [HexColor("#696969"),HexColor("#A9A9A9"),HexColor("#D8BFD8"),
         HexColor("#DCDCDC"),HexColor('#E6E6FA'),HexColor("#B0C4DE"),
         HexColor("#778899"),HexColor('#B0C4DE'),HexColor("#6495ED"),
         HexColor("#483D8B")
         ]
z = autoLegender(draw_pie(data,labs,color),labs,color)

pdf=SimpleDocTemplate('ppff.pdf')
pdf.multiBuild([z])
Beispiel #32
0
def main(args):
    try:
        path_omd = Path(__file__).resolve().parent.parent
    except:
        raise OSError

    path_license_texts = path_omd / "license_sources/license_texts/"
    path_pdf = path_omd / "License_texts.pdf"
    path_logo = path_omd / "license_sources/check_mk_logo_large1.png"
    path_licenses_csv = path_omd / "Licenses.csv"

    used_licenses = used_licenses_from_csv(path_licenses_csv)

    registerFont(TTFont('Calibri', 'Calibri.ttf'))
    doc = SimpleDocTemplate(str(path_pdf),
                            pagesize=letter,
                            bottomMargin=.4 * inch,
                            topMargin=.6 * inch,
                            rightMargin=.8 * inch,
                            leftMargin=.8 * inch)
    toc = TableOfContents()
    toc.levelStyles = [
        PS(fontName='Calibri',
           fontSize=14,
           name='TOCHeading1',
           leftIndent=20,
           firstLineIndent=-20,
           spaceBefore=5,
           leading=16),
        PS(fontSize=12, name='TOCHeading2', leftIndent=40, firstLineIndent=-20, leading=12),
    ]
    cover = PS(name='Cover', fontSize=16, leading=22, alignment=1)
    title = PS(name='Title', fontSize=24, leading=16)
    h1 = PS(name='Heading1', fontSize=16, leading=16)
    normal = PS(name='Normal', fontSize=8)
    spacer = Spacer(width=0, height=2 * cm)

    cover_logo = Image(str(path_logo), width=3.5 * inch, height=1 * inch)
    cover_text = "Open Source licenses included in:<br /><br />\n\
            Checkmk Enterprise Edition<br />\n\
            Checkmk Managed Services Edition<br /><br />\n\
            Version Status: %s" % args.cmk_version

    story = []
    story.append(Spacer(width=0, height=6 * cm))
    story.append(cover_logo)
    story.append(Spacer(width=0, height=1 * cm))
    story.append(Paragraph(cover_text, cover))
    story.append(PageBreak())
    story.append(Paragraph('<b>Content</b>', title))
    story.append(spacer)
    story.append(toc)

    for used_license in used_licenses:
        if used_license == "Public-Domain":
            continue

        file_path = path_license_texts / ("%s.txt" % used_license.lower())
        if file_path.is_file():
            with file_path.open(encoding="utf-8") as txt_file:
                headline = "<b>%s</b>" % txt_file.readline().replace("\n", "<br /><br />\n")
                text_content = txt_file.read().replace("\n", "<br />\n")
            story.append(PageBreak())
            story.append(heading(headline, h1))
            story.append(Paragraph(text_content, normal))
        else:
            print("No license text file found for ID \"%s\" and path %s" %
                  (used_license, file_path))

    doc = MyDocTemplate(str(path_pdf))
    doc.multiBuild(story, onLaterPages=add_page_number)
Beispiel #33
0
            name = pdf_file
            if pdf_file.endswith('.jpg.pdf'):
                name = name[:-8]
            elif pdf_file.endswith('.pdf'):
                name = name[:-4]
            elif pdf_file.endswith('.PDF'):
                name = name[:-4]
            #if ".jpg" in pdf_file:
                #name = pdf_file[:-4]
            name = name.split('\\')[-1]
            print(name)

            t = Paragraph(name,bt)
            
            pdf=SimpleDocTemplate(temp_file)
            pdf.multiBuild([t])
            # pdf.close()
            

            name_pdf = PdfFileReader(open(temp_file, "rb"), strict=False)
            output.addPage(name_pdf.getPage(0))
            output.addBlankPage()
            # 分别将page添加到输出output中
            for iPage in range(pageCount):
                output.addPage(input.getPage(iPage))
            if pageCount % 2:
                output.addBlankPage()
            rm_targets.append(temp_file)

        print("合并后的总页数:%d."%outputPages)
        # 写入到目标PDF文件
Beispiel #34
0
class PDFPSReporte:

    def __init__(self, path):
        self.path = path
        self.styleSheet = getSampleStyleSheet()
        self.elements = []

        # colors - Azul turkeza 367AB3
        self.colorOhkaGreen0 = Color((45.0/255), (166.0/255), (153.0/255), 1)
        self.colorOhkaGreen1 = Color((182.0/255), (227.0/255), (166.0/255), 1)
        self.colorOhkaGreen2 = Color((140.0/255), (222.0/255), (192.0/255), 1)
        #self.colorOhkaGreen2 = Color((140.0/255), (222.0/255), (192.0/255), 1)
        self.colorOhkaBlue0 = Color((54.0/255), (122.0/255), (179.0/255), 1)
        self.colorOhkaBlue1 = Color((122.0/255), (180.0/255), (225.0/255), 1)
        self.colorOhkaGreenLineas = Color((50.0/255), (140.0/255), (140.0/255), 1)

        self.firstPage()
        self.nextPagesHeader(True)
        self.remoteSessionTableMaker()
        self.nextPagesHeader(False)
        self.inSiteSessionTableMaker()
        self.nextPagesHeader(False)
        self.extraActivitiesTableMaker()
        self.nextPagesHeader(False)
        self.summaryTableMaker()
        # Build
        self.doc = SimpleDocTemplate(path, pagesize=LETTER)
        self.doc.multiBuild(self.elements, canvasmaker=FooterCanvas)

    def firstPage(self):
        img = Image('static/lr.png', kind='proportional')
        img.drawHeight = 0.5*inch
        img.drawWidth = 2.4*inch
        img.hAlign = 'LEFT'
        self.elements.append(img)

        spacer = Spacer(30, 100)
        self.elements.append(spacer)

        img = Image('static/ohka.png')
        img.drawHeight = 2.5*inch
        img.drawWidth = 5.5*inch
        self.elements.append(img)

        spacer = Spacer(10, 250)
        self.elements.append(spacer)

        psDetalle = ParagraphStyle('Resumen', fontSize=9, leading=14, justifyBreaks=1, alignment=TA_LEFT, justifyLastLine=1)
        text = """REPORTE DE SERVICIOS PROFESIONALES<br/>
        Empresa: Nombre del Cliente<br/>
        Fecha de Inicio: 23-Oct-2019<br/>
        Fecha de actualización: 01-Abril-2020<br/>
        """
        paragraphReportSummary = Paragraph(text, psDetalle)
        self.elements.append(paragraphReportSummary)
        self.elements.append(PageBreak())

    def nextPagesHeader(self, isSecondPage):
        if isSecondPage:
            psHeaderText = ParagraphStyle('Hed0', fontSize=16, alignment=TA_LEFT, borderWidth=3, textColor=self.colorOhkaGreen0)
            text = 'REPORTE DE SESIONES'
            paragraphReportHeader = Paragraph(text, psHeaderText)
            self.elements.append(paragraphReportHeader)

            spacer = Spacer(10, 10)
            self.elements.append(spacer)

            d = Drawing(500, 1)
            line = Line(-15, 0, 483, 0)
            line.strokeColor = self.colorOhkaGreenLineas
            line.strokeWidth = 2
            d.add(line)
            self.elements.append(d)

            spacer = Spacer(10, 1)
            self.elements.append(spacer)

            d = Drawing(500, 1)
            line = Line(-15, 0, 483, 0)
            line.strokeColor = self.colorOhkaGreenLineas
            line.strokeWidth = 0.5
            d.add(line)
            self.elements.append(d)

            spacer = Spacer(10, 22)
            self.elements.append(spacer)

    def remoteSessionTableMaker(self):        
        psHeaderText = ParagraphStyle('Hed0', fontSize=12, alignment=TA_LEFT, borderWidth=3, textColor=self.colorOhkaBlue0)
        text = 'SESIONES REMOTAS'
        paragraphReportHeader = Paragraph(text, psHeaderText)
        self.elements.append(paragraphReportHeader)

        spacer = Spacer(10, 22)
        self.elements.append(spacer)
        """
        Create the line items
        """
        d = []
        textData = ["No.", "Fecha", "Hora Inicio", "Hora Fin", "Tiempo Total"]
                
        fontSize = 8
        centered = ParagraphStyle(name="centered", alignment=TA_CENTER)
        for text in textData:
            ptext = "<font size='%s'><b>%s</b></font>" % (fontSize, text)
            titlesTable = Paragraph(ptext, centered)
            d.append(titlesTable)        

        data = [d]
        lineNum = 1
        formattedLineData = []

        alignStyle = [ParagraphStyle(name="01", alignment=TA_CENTER),
                      ParagraphStyle(name="02", alignment=TA_LEFT),
                      ParagraphStyle(name="03", alignment=TA_CENTER),
                      ParagraphStyle(name="04", alignment=TA_CENTER),
                      ParagraphStyle(name="05", alignment=TA_CENTER)]

        for row in range(10):
            lineData = [str(lineNum), "Miércoles, 11 de diciembre de 2019", 
                                            "17:30", "19:24", "1:54"]
            #data.append(lineData)
            columnNumber = 0
            for item in lineData:
                ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
                p = Paragraph(ptext, alignStyle[columnNumber])
                formattedLineData.append(p)
                columnNumber = columnNumber + 1
            data.append(formattedLineData)
            formattedLineData = []
            
        # Row for total
        totalRow = ["Total de Horas", "", "", "", "30:15"]
        for item in totalRow:
            ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
            p = Paragraph(ptext, alignStyle[1])
            formattedLineData.append(p)
        data.append(formattedLineData)
        
        #print(data)
        table = Table(data, colWidths=[50, 200, 80, 80, 80])
        tStyle = TableStyle([ #('GRID',(0, 0), (-1, -1), 0.5, grey),
                ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                #('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ("ALIGN", (1, 0), (1, -1), 'RIGHT'),
                ('LINEABOVE', (0, 0), (-1, -1), 1, self.colorOhkaBlue1),
                ('BACKGROUND',(0, 0), (-1, 0), self.colorOhkaGreenLineas),
                ('BACKGROUND',(0, -1),(-1, -1), self.colorOhkaBlue1),
                ('SPAN',(0,-1),(-2,-1))
                ])
        table.setStyle(tStyle)
        self.elements.append(table)

    def inSiteSessionTableMaker(self):
        self.elements.append(PageBreak())
        psHeaderText = ParagraphStyle('Hed0', fontSize=12, alignment=TA_LEFT, borderWidth=3, textColor=self.colorOhkaBlue0)
        text = 'SESIONES EN SITIO'
        paragraphReportHeader = Paragraph(text, psHeaderText)
        self.elements.append(paragraphReportHeader)

        spacer = Spacer(10, 22)
        self.elements.append(spacer)
        """
        Create the line items
        """
        d = []
        textData = ["No.", "Fecha", "Hora Inicio", "Hora Fin", "Tiempo Total"]
                
        fontSize = 8
        centered = ParagraphStyle(name="centered", alignment=TA_CENTER)
        for text in textData:
            ptext = "<font size='%s'><b>%s</b></font>" % (fontSize, text)
            titlesTable = Paragraph(ptext, centered)
            d.append(titlesTable)        

        data = [d]
        lineNum = 1
        formattedLineData = []

        alignStyle = [ParagraphStyle(name="01", alignment=TA_CENTER),
                      ParagraphStyle(name="02", alignment=TA_LEFT),
                      ParagraphStyle(name="03", alignment=TA_CENTER),
                      ParagraphStyle(name="04", alignment=TA_CENTER),
                      ParagraphStyle(name="05", alignment=TA_CENTER)]

        for row in range(10):
            lineData = [str(lineNum), "Miércoles, 11 de diciembre de 2019", 
                                            "17:30", "19:24", "1:54"]
            #data.append(lineData)
            columnNumber = 0
            for item in lineData:
                ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
                p = Paragraph(ptext, alignStyle[columnNumber])
                formattedLineData.append(p)
                columnNumber = columnNumber + 1
            data.append(formattedLineData)
            formattedLineData = []
            
        # Row for total
        totalRow = ["Total de Horas", "", "", "", "30:15"]
        for item in totalRow:
            ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
            p = Paragraph(ptext, alignStyle[1])
            formattedLineData.append(p)
        data.append(formattedLineData)
        
        #print(data)
        table = Table(data, colWidths=[50, 200, 80, 80, 80])
        tStyle = TableStyle([ #('GRID',(0, 0), (-1, -1), 0.5, grey),
                ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                #('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ("ALIGN", (1, 0), (1, -1), 'RIGHT'),
                ('LINEABOVE', (0, 0), (-1, -1), 1, self.colorOhkaBlue1),
                ('BACKGROUND',(0, 0), (-1, 0), self.colorOhkaGreenLineas),
                ('BACKGROUND',(0, -1),(-1, -1), self.colorOhkaBlue1),
                ('SPAN',(0,-1),(-2,-1))
                ])
        table.setStyle(tStyle)
        self.elements.append(table)

    def extraActivitiesTableMaker(self):
        self.elements.append(PageBreak())
        psHeaderText = ParagraphStyle('Hed0', fontSize=12, alignment=TA_LEFT, borderWidth=3, textColor=self.colorOhkaBlue0)
        text = 'OTRAS ACTIVIDADES Y DOCUMENTACIÓN'
        paragraphReportHeader = Paragraph(text, psHeaderText)
        self.elements.append(paragraphReportHeader)

        spacer = Spacer(10, 22)
        self.elements.append(spacer)
        """
        Create the line items
        """
        d = []
        textData = ["No.", "Fecha", "Hora Inicio", "Hora Fin", "Tiempo Total"]
                
        fontSize = 8
        centered = ParagraphStyle(name="centered", alignment=TA_CENTER)
        for text in textData:
            ptext = "<font size='%s'><b>%s</b></font>" % (fontSize, text)
            titlesTable = Paragraph(ptext, centered)
            d.append(titlesTable)        

        data = [d]
        lineNum = 1
        formattedLineData = []

        alignStyle = [ParagraphStyle(name="01", alignment=TA_CENTER),
                      ParagraphStyle(name="02", alignment=TA_LEFT),
                      ParagraphStyle(name="03", alignment=TA_CENTER),
                      ParagraphStyle(name="04", alignment=TA_CENTER),
                      ParagraphStyle(name="05", alignment=TA_CENTER)]

        for row in range(10):
            lineData = [str(lineNum), "Miércoles, 11 de diciembre de 2019", 
                                            "17:30", "19:24", "1:54"]
            #data.append(lineData)
            columnNumber = 0
            for item in lineData:
                ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
                p = Paragraph(ptext, alignStyle[columnNumber])
                formattedLineData.append(p)
                columnNumber = columnNumber + 1
            data.append(formattedLineData)
            formattedLineData = []
            
        # Row for total
        totalRow = ["Total de Horas", "", "", "", "30:15"]
        for item in totalRow:
            ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
            p = Paragraph(ptext, alignStyle[1])
            formattedLineData.append(p)
        data.append(formattedLineData)
        
        #print(data)
        table = Table(data, colWidths=[50, 200, 80, 80, 80])
        tStyle = TableStyle([ #('GRID',(0, 0), (-1, -1), 0.5, grey),
                ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                #('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ("ALIGN", (1, 0), (1, -1), 'RIGHT'),
                ('LINEABOVE', (0, 0), (-1, -1), 1, self.colorOhkaBlue1),
                ('BACKGROUND',(0, 0), (-1, 0), self.colorOhkaGreenLineas),
                ('BACKGROUND',(0, -1),(-1, -1), self.colorOhkaBlue1),
                ('SPAN',(0,-1),(-2,-1))
                ])
        table.setStyle(tStyle)
        self.elements.append(table)

    def summaryTableMaker(self):
        self.elements.append(PageBreak())
        psHeaderText = ParagraphStyle('Hed0', fontSize=12, alignment=TA_LEFT, borderWidth=3, textColor=self.colorOhkaBlue0)
        text = 'REGISTRO TOTAL DE HORAS'
        paragraphReportHeader = Paragraph(text, psHeaderText)
        self.elements.append(paragraphReportHeader)

        spacer = Spacer(10, 22)
        self.elements.append(spacer)
        """
        Create the line items
        """

        tStyle = TableStyle([
                   ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                   #('VALIGN', (0, 0), (-1, -1), 'TOP'),
                   ("ALIGN", (1, 0), (1, -1), 'RIGHT'),
                   ('LINEABOVE', (0, 0), (-1, -1), 1, self.colorOhkaBlue1),
                   ('BACKGROUND',(-2, -1),(-1, -1), self.colorOhkaGreen2)
                   ])

        fontSize = 8
        lineData = [["Sesiones remotas", "30:15"],
                    ["Sesiones en sitio", "00:00"],
                    ["Otras actividades", "00:00"],
                    ["Total de horas consumidas", "30:15"]]

        # for row in lineData:
        #     for item in row:
        #         ptext = "<font size='%s'>%s</font>" % (fontSize-1, item)
        #         p = Paragraph(ptext, centered)
        #         formattedLineData.append(p)
        #     data.append(formattedLineData)
        #     formattedLineData = []

        table = Table(lineData, colWidths=[400, 100])
        table.setStyle(tStyle)
        self.elements.append(table)

        # Total de horas contradas vs horas consumidas
        data = []
        formattedLineData = []

        lineData = [["Total de horas contratadas", "120:00"],
                    ["Horas restantes por consumir", "00:00"]]

        # for row in lineData:
        #     for item in row:
        #         ptext = "<b>{}</b>".format(item)
        #         p = Paragraph(ptext, self.styleSheet["BodyText"])
        #         formattedLineData.append(p)
        #     data.append(formattedLineData)
        #     formattedLineData = []

        table = Table(lineData, colWidths=[400, 100])
        tStyle = TableStyle([
                ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                ("ALIGN", (1, 0), (1, -1), 'RIGHT'),
                ('BACKGROUND', (0, 0), (1, 0), self.colorOhkaBlue1),
                ('BACKGROUND', (0, 1), (1, 1), self.colorOhkaGreen1),
                ])
        table.setStyle(tStyle)

        spacer = Spacer(10, 50)
        self.elements.append(spacer)
        self.elements.append(table)
Beispiel #35
0
	def draw_canvas(self, page_count):
		page = 'Page {0} of {1}'.format(self._pageNumber, page_count)
		x = 128
		self.saveState()
		pdfmetrics.registerFont(TTFont('OpenSans', '/usr/share/fonts/OpenSans-Regular.ttf'))
		self.setFont('OpenSans', 10)
		self.setStrokeColorRGB(0, 0, 0)
		self.setLineWidth(0.5)
		self.drawCentredString(120, letter[1] - 30, 'Network Device Report')
		self.drawString(letter[0] - 120, letter[1] - 30, page)	
		self.line(66, letter[1] - 40, letter[0] - 66, letter[1] - 40)
		self.line(66, 78, letter[0] - 66, 78)
		#self.drawCentredString(letter[0] / 2, 65, page)	
		self.drawImage('logo-blue.jpg', letter[0] - 175, 25, height=50, width=120)
		#self.drawString(letter[0]-x, 25, page)
		self.restoreState()


styles = getSampleStyleSheet()
elements = []
#elements.append(Image('logo-blue.png', height=103, 250))
#elements.append(Paragraph("Hello"))
#elements.append(Paragraph("World"))
elements.append(PageBreak())
elements.append(PageBreak())
elements.append(PageBreak())
#elements.append(Paragraph("You are in page 2"))

doc = SimpleDocTemplate("device_report.pdf", pagesize=letter)
doc.multiBuild(elements, canvasmaker=FooterCanvas)
Beispiel #36
0
def merge_pdf2(request):
    pdf1 = "pdf1.pdf"
    pdf2 = "pdf2.pdf"

    pdfs = [pdf1, pdf2]

    buffer = BytesIO()
    doc = SimpleDocTemplate(buffer,
                            pagesize=PAGE_SIZE,
                            rightMargin=MARGIN_SIZE,
                            leftMargin=MARGIN_SIZE,
                            topMargin=85,
                            bottomMargin=18)

    content = []

    # to
    # fin toc
    # merge
    if not pdfs or len(pdfs) < 2:
        exit("Please enter at least two pdfs for merging!")

    legend_text = 'justification_legend'
    legend_text += "<br/><font color=red>%s</font>" % 'fffff'
    p = ParagraphStyle('normal')
    content.append(Paragraph('''
                            <para>
                                %s
                            </para>
                            ''' % legend_text, p))
    doc.build(content)
    items = []
    address = 'WHATEVERYOUWNATTOTYPE'
    address = '<link href="' + 'http://www.hoboes.com/Mimsy/hacks/adding-links-to-pdf/' + '">' + address + '</link>'
    items.append(Paragraph(address, ParagraphStyle('body')))
    doc.multiBuild(items)

    output = PdfFileWriter()

    num_page = 0
    no_page = 0
    width, height = A4

    output.addBlankPage(width, height)
    cur = 1
    cur_prev = 0
    for fname in pdfs:
        input = PdfFileReader(open(fname, 'rb'))

        output.addPage(input.getPage(0))
        output.addBookmark(str(no_page), num_page)
        num_page = num_page+1
        no_page = no_page + 1

        rect = RectangleObject([400, 400, 600, 600])
        output.addLink(cur_prev, cur, rect)
        cur_prev = cur_prev + 1
        cur = cur + 1
    d = open("output.pdf", "wb")

    output.write(d)
    d.close()
    return render(request, "test.html")