Esempio n. 1
0
    def __init__(self, report: InterestTransferListReport, year: int, today: str):
        self.buffer = io.BytesIO()
        story = []

        styles = getSampleStyleSheet()
        styleH1 = styles['Heading2']
        styleH2 = styles['Heading3']
        styleB = copy.deepcopy(styles['Normal'])
        styleB.spaceAfter = 0.1*cm
        styleB.fontName = 'Helvetica-Bold'

        doc = SimpleDocTemplate(self.buffer, pagesize=A4)
        doc.leftMargin = 1*cm
        doc.rightMargin = 1*cm
        doc.topMargin = 1*cm
        doc.bottomMargin = 1*cm

        story.append(Paragraph(f"Zinsen für das Jahr {year}", styleH1))
        for data in report.per_contract_data:
            story.append(Paragraph(f"Direktkreditvertrag Nr. {data.contract.number}, {data.contract.contact}", styleH2))
            story.append(Paragraph(f"Kontostand {today}: {euro(data.contract.balance)}", styleB))
            story.append(Paragraph(f"Zinsberechung {year}:", styleB))
            story.append(interest_year_table(data.interest_rows))
            story.append(Spacer(1, 0.1*cm))
            story.append(Paragraph(f"Zinsen {year}: {euro(data.interest)}", styleB))

        story.append(Spacer(1, 0.5*cm))
        story.append(Paragraph(f"SUMME ZINSEN {year}: {euro(report.sum_interest)}", styleB))

        doc.build(story)
        self.buffer.seek(0)
Esempio n. 2
0
    def create_pdf(self):
        pdf = StringIO.StringIO()

        doc = SimpleDocTemplate(pdf)
        doc.leftMargin = 31
        doc.rightMargin = 31
        doc.topMargin = 390
        doc.bottomMargin = 110

        story = []
        order_items = [["Artikelnr.", "Name", "Menge", "Preis", "Summe"]]
        for item in self.order.items.all():
            amount = str(item.amount) + " " + item.product.unit
            price = currency(item.product_price_gross)
            total = currency(item.price_gross)
            order_items.append(
                [item.product.sku, item.product_name, amount, price, total])

        order_items_table = Table(order_items, (80, 238, 60, 70, 70))
        order_items_table.setStyle(dn_order_items_style)

        story.append(order_items_table)
        story.append(Spacer(1, 40))

        # END
        story.append(Paragraph(getattr(settings, "DN_END"), styleN))

        doc.build(story, onFirstPage=self.page, onLaterPages=self.page)
        pdf.seek(0)
        return pdf
Esempio n. 3
0
    def create_pdf(self):
        pdf = StringIO.StringIO()

        doc = SimpleDocTemplate(pdf)
        doc.leftMargin=31
        doc.rightMargin=31
        doc.topMargin=390
        doc.bottomMargin=110

        story = []
        order_items = [["Artikelnr.", "Name", "Menge", "Preis", "Summe"]]
        for item in self.order.items.all():
            amount = str(item.amount) + " " + item.product.unit
            price = currency(item.product_price_gross)
            total = currency(item.price_gross)
            order_items.append([item.product.sku, item.product_name, amount, price, total])

        order_items_table = Table(order_items, (80, 238, 60, 70, 70))
        order_items_table.setStyle(dn_order_items_style)

        story.append(order_items_table)
        story.append(Spacer(1, 40))

        # END
        story.append(Paragraph(getattr(settings, "DN_END"), styleN))

        doc.build(story, onFirstPage=self.page, onLaterPages=self.page)
        pdf.seek(0)
        return pdf
Esempio n. 4
0
def generatepdf(ipblock, zip_files_path, reportspath):
    combined_files(zip_files_path, reportspath)
    renu_report(ipblock, zip_files_path, reportspath)
    company_reports(ipblock, zip_files_path, reportspath)
    os.remove(reportspath + '\AllFiles.csv')
    readfiles = glob.glob(os.path.join(reportspath, "*.csv"))
    for filename in readfiles:
        if "combined_files" in filename:
            os.remove(reportspath + '\combined_files.csv')
        filena, file_extension = os.path.splitext(filename)
        filenam = str(filena.split("\\")[-1])

        # Content.
        line1 = "Vulnerability Report for "
        content = line1 + filenam
        content2 = line1 + filenam + " continued ... "

        def logo(canvas, doc):
            logo_img = 'logo.png'
            canvas.drawImage(logo_img, 300, 730)
            canvas.drawString(100, 715, content)

        def logo2(canvas, doc):
            logo_img = 'logo.png'
            canvas.drawImage(logo_img, 300, 730)
            canvas.drawString(100, 715, content2)

        pdfReportPages = str(filena) + '.pdf'
        doc = SimpleDocTemplate(pdfReportPages, pagesize=letter)

        elements = []

        col1 = "TIMESTAMP"
        col2 = "HOST"
        col3 = "NAME OF VULNERABILITY"
        data = [[col1, col2, col3]]
        with open(filename) as infile:
            for line in infile:
                reader = csv.reader(infile)
                data.extend(list(reader))
        tableThatSplitsOverPages = Table(data, [5 * cm, 6 * cm, 5 * cm],
                                         repeatRows=1)
        tableThatSplitsOverPages.hAlign = 'LEFT'
        tblStyle = TableStyle([
            ('TEXTCOLOR', (0, 0), (-1, -1), colors.black),
            ('VALIGN', (0, 0), (-1, -1), 'TOP'),
            ('LINEBELOW', (0, 0), (-1, -1), 1, colors.black),
            ('INNERGRID', (0, 0), (-1, -1), 1.5, colors.black),
            ('BOX', (0, 0), (-1, -1), 1.5, colors.black)
        ])
        tblStyle.add('BACKGROUND', (0, 0), (-1, -1), colors.lightblue)
        tblStyle.add('BACKGROUND', (0, 1), (-1, -1), colors.white)
        tableThatSplitsOverPages.setStyle(tblStyle)
        elements.append(tableThatSplitsOverPages)

        doc.topMargin = 1.3 * inch
        doc.build(elements, onFirstPage=logo, onLaterPages=logo2)
        del data[:]
        os.remove(filename)
Esempio n. 5
0
def genera_lettera(citazione):

    path_file = '%s/lettere/lett_%s%s.pdf' % (settings.DOCDIR, citazione['id_frase'], citazione['canzone'])

    row = len(citazione['testo'].split('''
'''))
    print(citazione['canzone'])

    size = 6 if row <80 else 4

    size = 0
    if row < 35:
        size = 10
    elif row < 55:
        size = 8
    elif row < 60:
        size = 6
    else:
        size = 4

    size = int(6 + (100/row))
    size = size if row < 80 else 6
    size = 10 if row < 38 else size



    #citazione['autore'] = ' righe %s %%s' % row % size

    tabella_testo = [
        [
            par_nero("""{canzone}<br/><br/>""".format(**citazione), font=12, align=TA_CENTER, fontName='papyrus')

        ],
        [
            #par_nero("{testo}".format(**citazione), font=size, lead=size, align=TA_CENTER, fontName='Times-BoldItalic')
            par_nero("{testo}".format(**citazione), font=size, lead=size, align=TA_CENTER, fontName='papyrus')
        ],
        [
            #par_nero("{autore}".format(**citazione), font=8, align=TA_RIGHT)
            par_nero("{autore}".format(**citazione), font=8, align=TA_RIGHT, fontName='papyrus')
        ]
    ]

    style_row = TableStyle([])
    #style_row.add('LINEABOVE', (0, 0), (-1, -1), 0.25, colors.grey)
    #style_row.add('LINEBELOW', (0, 0), (-1, -1), 0.25, colors.grey)
    #style_row.add('LINEAFTER', (0, 0), (-1, -1), 0.25, colors.grey)
    #style_row.add('LINEBEFORE', (0, 0), (-1, -1), 0.25, colors.grey)
    table = Table(tabella_testo, colWidths=12 * units.cm, style=style_row)


    doc = SimpleDocTemplate(path_file, pagesize=(13*units.cm, 21*units.cm))
    margin_top = 0.5 if row > 60 else (90/row)
    doc.topMargin = units.cm * margin_top
    doc.bottomMargin = 0.5 *units.cm

    doc.build([table])
Esempio n. 6
0
    def create_pdf(self):
        pdf = StringIO.StringIO()

        doc = SimpleDocTemplate(pdf)
        doc.leftMargin=31
        doc.rightMargin=31
        doc.topMargin=390
        doc.bottomMargin=110

        story = []
        order_items = [["Artikelnr.", "Name", "Menge", "Preis", "Summe"]]
        for item in self.order.items.all():
            # Amount
            amount = str(item.amount)
            if item.product.unit:
                amount += " " + item.product.unit
            if item.product.active_packing_unit:
                amount += "\n(" + str(packages(item)) + " " + item.product.packing_unit_unit + ")"
            # Name
            item_name = item.product_name
            for property in item.product.get_displayed_properties():
                item_name += "\n" + property["title"] + ": " + property["value"] + " " + property["unit"]
            for property in item.product.get_variant_properties():
                item_name += "\n" + property["title"] + ": " + property["value"] + " " + property["unit"]
            if item.product.is_configurable_product():
                for property in item.get_properties():
                    item_name += "\n" + property["title"] + ": " + property["value"] + property["unit"] + " " + property["price"]
            price = currency(item.product_price_gross)
            if item.product.price_unit:
                price += " / " + item.product.price_unit
            total = currency(item.price_gross)
            order_items.append([item.product.sku, item_name, amount, price, total])

        if self.order.voucher_number:
            order_items.append(["", "Voucher", "1", currency(self.order.voucher_price), currency(self.order.voucher_price)])

        order_items.append(["", "Versandart (" + self.order.shipping_method.name + ")", "1", currency(self.order.shipping_price), currency(self.order.shipping_price)])
        order_items.append(["", "Zahlungsweise (" + self.order.payment_method.name + ")", "1", currency(self.order.payment_price), currency(self.order.payment_price)])

        order_items.append(["", "", "", "Summe", currency(self.order.price)])
        order_items.append(["", "", "", "Inkl. MwSt", currency(self.order.tax)])

        order_items_table = Table(order_items, (80, 238, 60, 70, 70))
        order_items_table.setStyle(in_order_items_style)

        story.append(order_items_table)
        story.append(Spacer(1, 40))

        # END
        story.append(Paragraph(getattr(settings, "IN_END"), styleN))

        doc.build(story, onFirstPage=self.page, onLaterPages=self.page)
        pdf.seek(0)
        return pdf
Esempio n. 7
0
def getDocument(filename):
    """Returns a ReportLab Document with the appropriate margins set."""

    doc = SimpleDocTemplate(filename)
    doc.pagesize = (PAGE_WIDTH, PAGE_HEIGHT)
    doc.leftMargin = doc.rightMargin = \
        doc.bottomMargin = inch * 0.5

    doc.topMargin = inch

    return doc
Esempio n. 8
0
def getDocument(filename):
    """Returns a ReportLab Document with the appropriate margins set."""

    doc = SimpleDocTemplate(filename)
    doc.pagesize = (PAGE_WIDTH, PAGE_HEIGHT)
    doc.leftMargin = doc.rightMargin = \
        doc.bottomMargin = inch * 0.5

    doc.topMargin = inch

    return doc
Esempio n. 9
0
def start_pdf(mdata):
	global doc, elements, dwidth, dheight

	pdf_file = os.path.join(PDF_DIR, mdata['title'] + '.pdf')
	doc = SimpleDocTemplate(pdf_file, pagesize=letter)
	elements = []
	dwidth, dheight = letter

	# margins
	doc.topMargin = TOP_MARGIN
	doc.leftMargin = LEFT_MARGIN
	doc.bottomMargin = TOP_MARGIN
	doc.rightMargin = LEFT_MARGIN
Esempio n. 10
0
def get_document(args, rightMargin=2.5*mm, leftMargin = 2.5*mm, topMargin = 2.5*mm, bottomMargin = 2.5*mm):
    save_path = f'{args.title}.pdf'
    doc = SimpleDocTemplate(save_path)
    doc.title = args.title

    doc.rightMargin = rightMargin
    doc.leftMargin = leftMargin
    doc.topMargin = topMargin
    doc.bottomMargin = bottomMargin
    doc.width = A4[0] - (doc.rightMargin + doc.leftMargin)
    doc.height = A4[1] - (doc.topMargin + doc.bottomMargin)

    return doc
Esempio n. 11
0
def go():
	doc = SimpleDocTemplate(f'cv_{LANGUAGE}.pdf')
	doc.leftMargin = LEFT_BAR + LEFT_BAR_MARGIN
	doc.rightMargin = 20
	doc.topMargin = 0.5 * cm
	Story = []
	style = styles['Normal']
	style.__dict__['justifyBreaks'] = 0
	style.__dict__['autoLeading'] = 'max'
	style.__dict__['alignment'] = 4
	style.__dict__['spaceAfter'] = 6
	style.refresh()
	for entry in parsedCV:
		p = Paragraph(entry, style)
		Story.append(p)
		#Story.append(Spacer(1,2*cm))
	doc.build(Story, onFirstPage=firstPage, onLaterPages=laterPages)
Esempio n. 12
0
def generar_etiquetas(file_output,
                      lista_productos,
                      page_renglones,
                      page_columnas,
                      start_position="a1"):
    etiquetas = []
    etiquetas_x_hoja = page_renglones * page_columnas
    doc = SimpleDocTemplate(file_output, pagesize=letter)
    doc.topMargin = 1.1 * cm
    doc.bottomMargin = 0
    doc.rightMargin = 3.0 * cm
    # container for the 'Flowable' objects
    elements = []

    cantidad_celdas_vacias = ((ord(start_position[0]) - ord('a')) * 3) + (
        (ord(start_position[1]) - ord('0')) - 1)

    etiquetas = etiquetas + [None for _ in range(cantidad_celdas_vacias)]
    for producto in lista_productos:
        etiquetas = etiquetas + [
            producto.copy() for _ in range(producto['cantidad'])
        ]
        while len(etiquetas) >= etiquetas_x_hoja:
            pagina = generate_page_pdf(etiquetas[0:etiquetas_x_hoja],
                                       page_columnas)
            elements.append(pagina)
            elements.append(PageBreak())
            print "tamaño buffer etiquetas ", len(
                etiquetas[0:etiquetas_x_hoja])
            del etiquetas[0:etiquetas_x_hoja]
    if len(etiquetas) > 0:
        etiquetas = etiquetas + [
            None for _ in range(etiquetas_x_hoja - len(etiquetas))
        ]
        pagina = generate_page_pdf(etiquetas[0:etiquetas_x_hoja],
                                   page_columnas)
        elements.append(pagina)

    # write the document to disk
    doc.build(elements)
    return etiquetas
Esempio n. 13
0
def pdf_demo_12(file):
    doc = SimpleDocTemplate(file)
    doc.topMargin = 30 * mm
    story = [Spacer(1, 70 * mm)]
    data = invoice_data_unicode_numbers()
    t = Table(data,
              colWidths=[25 * mm, 25 * mm, 25 * mm, 55 * mm, 30 * mm, 30 * mm],
              repeatRows=1)
    t.setStyle([
        ('LINEABOVE', (0, 0), (-1, 0), 2, (0.5, 0.5, 1.0)),
        ('LINEBELOW', (0, 0), (-1, 0), 2, (0.5, 0.5, 1.0)),
        ('LINEBELOW', (0, -2), (-1, -1), 2, (0.5, 0.5, 1.0)),
        ('BACKGROUND', (0, 0), (-1, 0), (0.9, 0.9, 0.9)),
        ('ALIGN', (0, 0), (2, -1), 'CENTRE'),
        ('ALIGN', (3, 0), (3, -1), 'LEFT'),
        ('ALIGN', (4, 0), (5, -1), 'RIGHT'),
        ('VALIGN', (0, 1), (5, -1), 'TOP'),
        ('FONTNAME', (4, 1), (5, -1), 'Courier'),
    ])
    story.append(t)
    doc.build(story,
              onFirstPage=invoice_header_first,
              onLaterPages=invoice_header_later,
              canvasmaker=NumberedCanvas)
Esempio n. 14
0
    def convert_context_to_pdf(self, context):
        account_list = context['account_list']

        today = datetime.date.today()

        def myFirstPage(canvas, doc):
            # Header
            canvas.saveState()
            canvas.setFont("Helvetica", 8)
            canvas.drawCentredString(PAGE_WIDTH / 2, 30, "VPAC")
            canvas.drawString(540, 30, "Page %d" % doc.page)
            canvas.drawString(50, 30, defaultfilters.date(today, "j, F Y"))
            canvas.restoreState()

        def myLaterPages(canvas, doc):
            canvas.saveState()

            # Footer
            canvas.setFont('Times-Roman', 8)
            canvas.drawCentredString(PAGE_WIDTH / 2, 30, "VPAC")
            canvas.drawString(540, 30, "Page %d" % doc.page)
            canvas.drawString(50, 30, defaultfilters.date(today, "j, F Y"))
            canvas.restoreState()

        data_dic = [[
            str(x.cn),
            str(getattr(x, 'telephoneNumber', '')),
            str(getattr(x, 'mobile', '')),
            str(getattr(x, 'mail', '')),
            str(getattr(x, 'l', ''))
        ] for x in account_list]

        data_list = list(data_dic)

        buffer = StringIO()
        doc = SimpleDocTemplate(buffer)
        doc.pagesize = portrait(A4)
        doc.topMargin = 40
        story = []

        table_style = TableStyle([
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
            ('LINEABOVE', (0, 0), (-1, 0), 1, colors.black),
            ('LINEBELOW', (0, 0), (-1, 0), 1, colors.black),
            ('LINEBELOW', (0, -1), (-1, -1), 1, colors.black),
            ('LINEBEFORE', (0, 0), (0, -1), 1, colors.black),
            ('LINEAFTER', (-1, 0), (-1, -1), 1, colors.black),
        ])

        # build the tables per unit
        # table
        item_list = [['Name', 'Telephone', 'Mobile', 'Email', 'Location']]
        item_list.extend(data_list)
        t = Table(item_list)
        t.hAlign = 'LEFT'
        t.setStyle(table_style)
        story.append(t)
        doc.build(story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)

        # Close the PDF object cleanly.
        pdf = buffer.getvalue()
        buffer.close()
        # Get the value of the StringIO buffer and write it to the response.
        return pdf
Esempio n. 15
0
def make_mortality_report(states, fname ):

	sorted = list()  # used to sort on different criteria
	for state in states:
		sorted.append(state)
		state['eff_death'] = state['death'][state['n_samples']-1]
		state['eff_positives'] = \
			state['positives'][state['n_samples']-1]
		state['eff_positives14'] = \
			state['eff_positives'] - \
		(state['positives'][state['n_samples']-1] -\
			state['positives'][state['n_samples']-15])

	mysize = (700,1250)

	datestr = str(datetime.date.today()-datetime.timedelta(days=1))

	doc = SimpleDocTemplate(fname, pagesize=mysize)
	doc.title = 'State trends report ' + datestr
	doc.title = 'State mortality report ' + datestr
	doc.topMargin = 36

	elements = []

	styles=getSampleStyleSheet()
	NAnote = ''

	sorted.sort(key=sort_death,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			'State mortality by total deaths', NAnote)

	sorted.sort(key=sort_death7,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			'State daily mortality, by last 7 day average ', NAnote)

	sorted.sort(key=sort_mort_pos,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			'State mortality by infected mortality rate', NAnote)

	sorted.sort(key=sort_mort_newpos,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			'State mortality by newly infected mortality rate', NAnote)


	n_days=60
	for state in states:
		state['eff_death'] = state['death'][state['n_samples']-1] -\
			state['death'][state['n_samples']-(n_days+1)]
		state['eff_positives'] = \
		state['positives'][state['n_samples']-1] -\
			state['positives'][state['n_samples']-(n_days+1)]
		state['eff_positives14'] = \
			state['eff_positives'] - \
		(state['positives'][state['n_samples']-1] -\
			state['positives'][state['n_samples']-15])

	sorted.sort(key=sort_death,reverse=True)
	single_mortality_table(  sorted, styles, elements, \
			str(n_days) + ' day state mortality by deaths', NAnote)

	sorted.sort(key=sort_mort_pos,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			str(n_days) + ' day state mortality by infected mortality rate', NAnote)

	sorted.sort(key=sort_mort_newpos,reverse=True)
	single_mortality_table( sorted, styles, elements, \
			str(n_days) + ' day state mortality by newly infected mortality rate', NAnote)


	# write the document to disk
	doc.build(elements)
Esempio n. 16
0
def make_trend_report(states, fname ):

	sorted = list()  # used to sort on different criteria
	for state in states:
		sorted.append(state)

	mysize = (700,1250)

	datestr = str(datetime.date.today()-datetime.timedelta(days=1))

	doc = SimpleDocTemplate(fname, pagesize=mysize)
	doc.title = 'State trends report ' + datestr
	doc.topMargin = 36

	elements = []

	styles=getSampleStyleSheet()
	NAnote = 'N/A - will never double under current trends'

	sorted.sort(key=sort_pos,reverse=True)
	single_trend_table( sorted, styles, elements, \
		'State trends by total positives', NAnote)

	sorted.sort(key=sort_active,reverse=True)
	single_trend_table( sorted, styles, elements, \
		'State trends by estimated active cases', NAnote)

	sorted.sort(key=sort_d1,reverse=True)
	single_trend_table( sorted, styles, elements, \
		'State trends by new cases', NAnote)

	sorted.sort(key=sort_d2,reverse=True)
	single_trend_table( sorted, styles, elements, \
		'State trends by by new case growth', NAnote)

	sorted.sort(key=sort_d3,reverse=True)
	single_trend_table( sorted, styles, elements, \
		'State trends by by new case growth acceleration', NAnote)

	sorted.sort(key=sort_dd1)
	single_trend_table( sorted, styles, elements, \
		'State trends by days to double new cases', NAnote)

	sorted.sort(key=sort_dmodel)
	single_trend_table( sorted, styles, elements, \
		'State trends by days to double total positives', \
		NAnote)

	sorted.sort(key=sort_amodel)
	single_trend_table( sorted, styles, elements, \
		'State trends by days to double active cases', \
		NAnote)

	sorted.sort(key=sort_ddpos)
	single_trend_table( sorted, styles, elements, \
		'State trends by days last doubling of total positives',\
			NAnote)

	sorted.sort(key=sort_ddact)
	single_trend_table( sorted, styles, elements, \
		'State trends by days for last doubling of active cases',\
			NAnote)

	# write the document to disk
	doc.build(elements)
Esempio n. 17
0
    def create_pdf(self):
        pdf = StringIO.StringIO()

        doc = SimpleDocTemplate(pdf)
        doc.leftMargin = 31
        doc.rightMargin = 31
        doc.topMargin = 390
        doc.bottomMargin = 110

        story = []
        order_items = [["Artikelnr.", "Name", "Menge", "Preis", "Summe"]]
        for item in self.order.items.all():
            # Amount
            amount = str(item.amount)
            if item.product.unit:
                amount += " " + item.product.unit
            if item.product.active_packing_unit:
                amount += "\n(" + str(packages(
                    item)) + " " + item.product.packing_unit_unit + ")"
            # Name
            item_name = item.product_name
            for property in item.product.get_displayed_properties():
                item_name += "\n" + property["title"] + ": " + property[
                    "value"] + " " + property["unit"]
            for property in item.product.get_variant_properties():
                item_name += "\n" + property["title"] + ": " + property[
                    "value"] + " " + property["unit"]
            if item.product.is_configurable_product():
                for property in item.get_properties():
                    item_name += "\n" + property["title"] + ": " + property[
                        "value"] + property["unit"] + " " + property["price"]
            price = currency(item.product_price_gross)
            if item.product.price_unit:
                price += " / " + item.product.price_unit
            total = currency(item.price_gross)
            order_items.append(
                [item.product.sku, item_name, amount, price, total])

        if self.order.voucher_number:
            order_items.append([
                "", "Voucher", "1",
                currency(self.order.voucher_price),
                currency(self.order.voucher_price)
            ])

        order_items.append([
            "", "Versandart (" + self.order.shipping_method.name + ")", "1",
            currency(self.order.shipping_price),
            currency(self.order.shipping_price)
        ])
        order_items.append([
            "", "Zahlungsweise (" + self.order.payment_method.name + ")", "1",
            currency(self.order.payment_price),
            currency(self.order.payment_price)
        ])

        order_items.append(["", "", "", "Summe", currency(self.order.price)])
        order_items.append(
            ["", "", "", "Inkl. MwSt",
             currency(self.order.tax)])

        order_items_table = Table(order_items, (80, 238, 60, 70, 70))
        order_items_table.setStyle(in_order_items_style)

        story.append(order_items_table)
        story.append(Spacer(1, 40))

        # END
        story.append(Paragraph(getattr(settings, "IN_END"), styleN))

        doc.build(story, onFirstPage=self.page, onLaterPages=self.page)
        pdf.seek(0)
        return pdf
Esempio n. 18
0
  def doPrint(self, app, qrcode_value, raw_score):
    pdf_file_name = tempfile.mktemp (".pdf")
    styles = getSampleStyleSheet ()
    h1 = styles["h1"]
    h1.alignment=TA_CENTER
    h1.fontSize = 36
    h1.spaceBefore = 10
    h1.spaceAfter = 22
    normal = styles["Normal"]
    normal.alignment=TA_CENTER
    normal.fontSize = 16
    starStyle = ParagraphStyle(name='Star',
                                  fontName='FontAwesome',
                                  fontSize=20,
                                  alignment=TA_CENTER,
                                  spaceAfter = 18)

    doc = SimpleDocTemplate (pdf_file_name)
    doc.pagesize = (8*cm, 29*cm)
    doc.topMargin = 0
    doc.leftMargin = 0
    doc.rightMargin = 0

    wheel_threshold = app.config.get('wheel_threshold')
    number_questions = app.config.get('number_questions')
    percent = float(raw_score) / float(number_questions)
    canWheel = float(percent) >= float(wheel_threshold) / float(number_questions)

    parts = []
    imagename = "images/stylo.png"
    normal.spaceAfter = 18
    if canWheel:
      parts.append(Paragraph(app.config.get('wheel_txt'), normal))

      d = barcode.createBarcodeDrawing("QR", width=4*cm, height=4*cm, barBorder=0, value=qrcode_value)
      d.hAlign = "CENTER"
      d.vAlign = "TOP"    
      parts.append(d)
    else:
      parts.append(Paragraph(app.config.get('no_wheel_txt'), normal))
      parts.append(Image(imagename, 4*cm, 4*cm))

    raw_score = min(raw_score, len(app.config.scoreValueTable())-1)
    parts.append(Paragraph(str(app.config.scoreValueTable()[raw_score]), h1))
    empty_star = u"\uF006"
    full_star = u"\uF005"
    
    stars = u""
    if percent <= 0.3:
      stars += 3 * empty_star
    elif percent < 0.6:
      stars += full_star + 2 * empty_star
    elif percent < 1:
      stars += 2 * full_star + empty_star
    else:
      stars += 3 * full_star
      
    parts.append(Paragraph(stars, starStyle))
    
    parts.append(Paragraph(app.config.get('url'), normal))
    doc.build(parts)
    #call([app.config.get('acrobat'), "", pdf_file_name])
    call([app.config.get('foxit'), "/t", pdf_file_name, app.config.get('printer_name')])
def project_application_to_pdf_doc(project_application):

    now = datetime.datetime.now()

    def footer(canvas, doc):
        canvas.setFont('Times-Roman', 9)
        canvas.drawCentredString(PAGE_WIDTH/2, 30, "%s" % (settings.ACCOUNTS_ORG_NAME))
        canvas.drawString(540, 30, "Page %d" % doc.page)
        canvas.drawString(50, 30, defaultfilters.date(now, "g:i a j, F Y"))

    def myFirstPage(canvas, doc):
        # Header
        canvas.saveState()
        canvas.setTitle("%s Project Application, number %s" % (settings.ACCOUNTS_ORG_NAME, project_application.id))

        canvas.setFont("Helvetica", 20)
        canvas.drawString(50, 800, '%s Project Application, number %s' % (settings.ACCOUNTS_ORG_NAME, project_application.id))

        # Footer
        footer(canvas, doc)

        canvas.restoreState()

    def myLaterPages(canvas, doc):
        canvas.saveState()

        # Footer
        footer(canvas, doc)

        canvas.restoreState()


    buffer = BytesIO()
    doc = SimpleDocTemplate(buffer)
    doc.pagesize = portrait(A4)
    doc.topMargin = 50
    story = []

    # Paragraph
    pstyle = ParagraphStyle(
        name="notesP",
        fontName="Times-Roman",
        fontSize=10,
        textColor=colors.Color(0,0,0),
        spaceBefore=10,
        spaceAfter=2)

    # indent
    istyle = ParagraphStyle(
        name="notesP",
        fontName="Times-Roman",
        fontSize=10,
        leftIndent=20,
        textColor=colors.Color(0,0,0),
        spaceAfter=2)

    # double indent
    iistyle = ParagraphStyle(
        name="notesP",
        fontName="Times-Roman",
        fontSize=10,
        leftIndent=40,
        textColor=colors.Color(0,0,0),
        spaceAfter=2)

    # gray small text
    estyle = ParagraphStyle(
        name="notesP",
        fontName="Times-Roman",
        fontSize=9,
        textColor=colors.gray,
        leftIndent=2,
        spaceAfter=2)

    # Heading
    hstyle = ParagraphStyle(
        name="notesP",
        fontName="Times-Roman",
        fontSize=14,
        textColor=colors.Color(0,0,0),
        spaceBefore=10,
        spaceAfter=15)

    table_style = TableStyle(
        [('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
         ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
         ]
    )

    # Project Overview
    story.append(Paragraph('<b>Project Overview</b>', hstyle))
    story.append(Paragraph('<b>Title:</b> %s' % (safe_or_none(project_application.title) or '&lt;incomplete&gt;'), pstyle))

    # TODO supervisor and applicant summary
    sup = ProjectApplicationMember.objects.filter(project_application=project_application, is_supervisor=True)[0] # should always be only one
    app = ProjectApplicationMember.objects.filter(project_application=project_application, is_applicant=True)[0] # should always be only one


    story.append(Paragraph('<b>Host Institute, Faculty and Department:</b> %s, %s, %s' %
           (safe_or_none(sup.institute) or '&lt;incomplete&gt;',
            safe_or_none(sup.faculty) or '&lt;incomplete&gt;',
            safe_or_none(sup.department) or '&lt;incomplete&gt;'), pstyle))
    story.append(Paragraph('The host institute, faculty and department of the Project Supervisor', estyle))

    story.append(Paragraph('<b>Field of Research:</b> %s' % (safe_or_none(project_application.get_FOR_display()) or '&lt;incomplete&gt;'), pstyle))

    if project_application.summary:
        summary = safe_or_none(project_application.summary).replace('\n', '<br/>')
    else:
        summary = '&lt;incomplete&gt;'
    story.append(Paragraph('<b>Summary of Proposal:</b>', pstyle))
    story.append(Paragraph('%s' % summary, istyle))

    if project_application.purpose:
        purpose = safe_or_none(project_application.purpose).replace('\n', '<br/>')
    else:
        purpose = '&lt;incomplete&gt;'
    story.append(Paragraph('<b>Supported Activity:</b>', pstyle))
    story.append(Paragraph('%s' % purpose, istyle))

    story.append(PageBreak())


    # Personnel
    story.append(Paragraph('<b>Personnel</b>', hstyle))

    story.append(Paragraph('<b>Participants</b>', pstyle))
    # build the Participant table
    data_list = ProjectApplicationMember.objects.filter(project_application=project_application).values_list(
            'is_applicant', 'is_supervisor', 'is_leader',
            'email', 'title', 'first_name', 'last_name',
            'institute', 'faculty', 'department', 'telephone', 'level', 'role').order_by('disp_order')
    for ap,sv,mg,em,tl,fn,ln,inst,fac,dept,tel,lvl,rl in data_list:
        flags = []
        story.append(Paragraph('Name: <b>%s %s %s</b>' % (safe_or_none(tl) or '&lt;incomplete&gt;',
                safe_or_none(fn) or '&lt;incomplete&gt;', safe_or_none(ln) or '&lt;incomplete&gt;'), pstyle))
        story.append(Paragraph('e-mail: %s' % (safe_or_none(em) or '&lt;incomplete&gt;'), istyle))
        if ap:
            flags.append('Applicant')
        if sv:
            flags.append('Project Supervisor')
        if mg:
            flags.append('Project Manager')
        if flags:
            story.append(Paragraph('%s' % (', '.join(flags)), istyle))
        story.append(Paragraph('Institute: %s, Faculty: %s, Department: %s' % (safe_or_none(inst) or '&lt;incomplete&gt;',
                safe_or_none(fac) or '&lt;incomplete&gt;', safe_or_none(dept) or '&lt;incomplete&gt;'), istyle))
        story.append(Paragraph('Telephone: %s' % (safe_or_none(tel) or '&lt;incomplete&gt;'), istyle))
        # get long description for 1st match of level and role abbreviation
        if lvl:
            lvl = next(safe_or_none(y) for x,y in ProjectApplicationMember.LEVELS if x == lvl)
        else:
            lvl = '&lt;incomplete&gt;'
        if rl:
            rl = next(safe_or_none(y) for x,y in ProjectApplicationMember.ROLES if x == rl)
        else:
            rl = '&lt;incomplete&gt;'
        story.append(Paragraph('Level: %s, Role: %s' % (lvl, rl), istyle))

    story.append(PageBreak())

    if project_application.hardware_request:
        hardware_request = safe_or_none(project_application.hardware_request).replace('\n', '<br/>')
    else:
        hardware_request = '&lt;left blank&gt;'
    story.append(Paragraph('<b>Sepcial Requirements:</b>', pstyle))
    story.append(Paragraph('%s' % hardware_request, istyle))

    if project_application.compute_note:
        compute_note = safe_or_none(project_application.compute_note).replace('\n', '<br/>')
    else:
        compute_note = '&lt;left blank&gt;'
    story.append(Paragraph('<b>Additional Information:</b>', pstyle))
    story.append(Paragraph('%s' % compute_note, istyle))


    doc.build(story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)

    # Close the PDF object cleanly.
    pdf = buffer.getvalue()
    buffer.close()

    return pdf
Esempio n. 20
0
    def convert_context_to_pdf(self, context):
        account_list = context["account_list"]

        today = datetime.date.today()

        def myFirstPage(canvas, doc):
            # Header
            canvas.saveState()
            canvas.setFont("Helvetica", 8)
            canvas.drawCentredString(PAGE_WIDTH / 2, 30, "VPAC")
            canvas.drawString(540, 30, "Page %d" % doc.page)
            canvas.drawString(50, 30, defaultfilters.date(today, "j, F Y"))
            canvas.restoreState()

        def myLaterPages(canvas, doc):
            canvas.saveState()

            # Footer
            canvas.setFont("Times-Roman", 8)
            canvas.drawCentredString(PAGE_WIDTH / 2, 30, "VPAC")
            canvas.drawString(540, 30, "Page %d" % doc.page)
            canvas.drawString(50, 30, defaultfilters.date(today, "j, F Y"))
            canvas.restoreState()

        data_dic = [
            [
                str(x.cn),
                str(getattr(x, "telephoneNumber", "")),
                str(getattr(x, "mobile", "")),
                str(getattr(x, "mail", "")),
                str(getattr(x, "l", "")),
            ]
            for x in account_list
        ]

        data_list = list(data_dic)

        buffer = StringIO()
        doc = SimpleDocTemplate(buffer)
        doc.pagesize = portrait(A4)
        doc.topMargin = 40
        story = []

        table_style = TableStyle(
            [
                ("INNERGRID", (0, 0), (-1, -1), 0.25, colors.black),
                ("BOX", (0, 0), (-1, -1), 0.25, colors.black),
                ("LINEABOVE", (0, 0), (-1, 0), 1, colors.black),
                ("LINEBELOW", (0, 0), (-1, 0), 1, colors.black),
                ("LINEBELOW", (0, -1), (-1, -1), 1, colors.black),
                ("LINEBEFORE", (0, 0), (0, -1), 1, colors.black),
                ("LINEAFTER", (-1, 0), (-1, -1), 1, colors.black),
            ]
        )

        # build the tables per unit
        # table
        item_list = [["Name", "Telephone", "Mobile", "Email", "Location"]]
        item_list.extend(data_list)
        t = Table(item_list)
        t.hAlign = "LEFT"
        t.setStyle(table_style)
        story.append(t)
        doc.build(story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)

        # Close the PDF object cleanly.
        pdf = buffer.getvalue()
        buffer.close()
        # Get the value of the StringIO buffer and write it to the response.
        return pdf
    def __init__(self, report: InterestTransferListReport, year: int,
                 today: str):
        self.snippets = get_custom_texts()
        self.buffer = io.BytesIO()
        self.today = today
        story = []

        self._setup_styles()

        doc = SimpleDocTemplate(self.buffer, pagesize=A4)
        doc.leftMargin = 1.5 * cm
        doc.rightMargin = 1.5 * cm
        doc.topMargin = 1.0 * cm
        doc.bottomMargin = 1.5 * cm

        for data in report.per_contract_data:
            story.extend(self._header(data))

            story.append(Spacer(1, 1.0 * cm))
            story.append(
                Paragraph(
                    f"Kontostand Direktkreditvertrag Nr. {data.contract.number}",
                    self.styleH2))

            story.append(Spacer(1, 1.0 * cm))
            story.append(
                Paragraph(f"Guten Tag {data.contract.contact.name}, ",
                          self.styleN))

            story.append(Spacer(1, 0.3 * cm))
            story.append(
                Paragraph((
                    f"der Kontostand des Direktkreditvertrags Nr. {data.contract.number} beträgt heute, "
                    f" am {today} {euro(data.contract.balance)}. "),
                          self.styleN))
            story.append(
                Paragraph(
                    f"Die Zinsen für das Jahr {year} berechnen sich wie folgt:",
                    self.styleN))
            story.append(Spacer(1, 0.3 * cm))
            story.append(interest_year_table(data.interest_rows, narrow=True))
            story.append(Spacer(1, 0.3 * cm))
            story.append(
                Paragraph(f"<b>Zinsen {year}:</b> {euro(data.interest)}",
                          self.styleN))
            story.append(Spacer(1, 0.5 * cm))
            story.append(
                Paragraph((
                    "Wir werden die Zinsen in den nächsten Tagen auf das im Vertrag angegebene Konto "
                    "überweisen. Bitte beachten Sie, dass Sie sich selbst um die Abführung von "
                    "Kapitalertragssteuer und Solidaritätszuschlag kümmern sollten, da wir das nicht "
                    "übernehmen können. "), self.styleN))
            story.append(Spacer(1, 0.5 * cm))
            story.append(Paragraph("Vielen Dank!", self.styleN))
            story.append(Spacer(1, 1.5 * cm))
            story.append(Paragraph("Mit freundlichen Grüßen", self.styleN))
            story.append(Spacer(1, 1.0 * cm))
            story.append(Paragraph(self.snippets['your_name'], self.styleN))
            story.append(
                Paragraph(f"für die {self.snippets['gmbh_name']}",
                          self.styleN))
            story.append(Spacer(1, 0.3 * cm))

            story.append(PageBreak())

        doc.build(story,
                  onFirstPage=self._draw_footer,
                  onLaterPages=self._draw_footer)
        self.buffer.seek(0)
Esempio n. 22
0
    def create_report(self, info):
        # Converting to PDF
        # document theme
        if local:
            doc = SimpleDocTemplate('{}_TestReport.pdf'.format(info["serialNo"]))
        else:
            doc = SimpleDocTemplate('/home/test/reports/{}_TestReport.pdf'.format(info["serialNo"]))
        doc.topMargin = 20
        doc.bottomMargin = 25
        doc.leftMargin = 25
        doc.rightMargin = 25
        doc.allowSplitting = False

        header_path = self.project_path + "/" + "header.png"
        if os.path.exists(header_path):
            header = Image(header_path, 8 * inch, 1 * inch)
            header.hAlign = "CENTRE"
            self.elements.append(header)
            self.elements.append(Spacer(1, 20))
        else:
            logging.warning("Header not found")

        self.elements.append(self.draw_line(colors.lightgrey))
        self.elements.append(Spacer(1, 1))
        self.elements.append(self.draw_line(colors.lightgrey))
        self.elements.append(Spacer(1, 3))
        self.elements.append(Paragraph("Serial No: " + info["serialNo"], self.styles['Title']))
        self.elements.append(self.draw_line(colors.lightgrey))
        self.elements.append(Spacer(1, 1))
        self.elements.append(self.draw_line(colors.lightgrey))
        self.elements.append(Spacer(1, 20))

        # Create Tables for each test

        # Device Info Table
        if info["deviceInfo"]:
            self.heading_block("Device Info")
            dev_table = pd.DataFrame(info["deviceInfo"], index=[0])
            dev_table = dev_table.T
            dev_table.reset_index(inplace=True)
            dev_table.columns = ["Item", "Detail"]
            dev_table.set_index(["Item"], inplace=True)
            dev_table.replace("", "N/A", inplace=True)
            self.draw_table(dev_table)

        # Mac Table
        if info["macInfo"]:
            self.heading_block("MAC Info")
            self.draw_table(info["macInfo"], column=["interface", "macaddr"])

        # Operation Table
        if info["operationInfo"]:
            self.heading_block("Operation Details")
            opt_table = pd.DataFrame(info["operationInfo"], index=[0])
            opt_table = opt_table.T
            opt_table.reset_index(inplace=True)
            opt_table.columns = ["Operation", "Status"]
            opt_table.set_index(["Operation"], inplace=True)
            opt_table.replace("", "N/A", inplace=True)
            self.draw_table(opt_table)

        # Test Table
        if info["testInfo"]:
            self.heading_block("Test Details")
            test_table = pd.DataFrame(info["testInfo"], index=[0])
            test_table = test_table.T
            test_table.reset_index(inplace=True)
            test_table.columns = ["Test", "Status"]
            test_table.set_index(["Test"], inplace=True)
            test_table.replace("", "N/A", inplace=True)
            self.draw_table(test_table)

        # Hardware Test Table

        if info["hwtestInfo"]:
            self.heading_block("Hardware Test Details")
            self.draw_table(info["hwtestInfo"], column=["item", "result", "detail"])

        # Burn test details
        if info["burntestInfo"]:
            self.heading_block("Burn Test Details")
            self.draw_table(info["burntestInfo"], column=["item", "result", "detail"])

        # Last test details
        if info["lasttestInfo"]:
            self.heading_block("Last Test Details")
            self.draw_table(info["lasttestInfo"], column=["item", "result", "detail"])

        # LanBurn Throughput Table
        self.heading_block("LanBurn Throughput")
        speed_table = pd.DataFrame.from_dict(info["performancestatsInfo"])
        speed_table.columns = [x.title() for x in speed_table.columns]
        speed_table.set_index(["Nic"], inplace=True)
        self.draw_table(speed_table)

        # LanBurn Throughput Bar Chart
        self.elements.append(Spacer(1, 30))
        filename = "lanburn.png"
        self.throughput_bar_chart(speed_table, self.project_path, filename)
        im = Image(filename, 4 * inch, 2.5 * inch)
        self.elements.append(im)

        if self.render_pdf:
            # Build all the elements to create a PDF
            doc.build(self.elements)