本文整理汇总了Python中reportlab.platypus.SimpleDocTemplate.pagesize方法的典型用法代码示例。如果您正苦于以下问题:Python SimpleDocTemplate.pagesize方法的具体用法?Python SimpleDocTemplate.pagesize怎么用?Python SimpleDocTemplate.pagesize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reportlab.platypus.SimpleDocTemplate
的用法示例。
在下文中一共展示了SimpleDocTemplate.pagesize方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: generate_consolidated_week_report
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def generate_consolidated_week_report(self, cr, uid):
parent_user_ids = self._get_user(cr, uid, group2=True)
if parent_user_ids:
for manager in parent_user_ids:
email = manager.email if self.validate_email(manager.email) else None
# CONTENIDO DE REPORTE
styles = getSampleStyleSheet()
elements = []
title = u'Reporte Semanal de Cobranza Consolidado'
style_h_one = styles['Heading1']
elements.append(Paragraph(title, style_h_one))
elements.append(Spacer(1, 0.25 * inch))
# facturas por ejecutivas
user_ids = self._get_user(cr, uid, group1=True)
for user in user_ids:
res = self._query_report(cr, uid, user_id=user.id)
elements = self._report_table(cr, uid, res, elements, title=user.name)
# facturas sin ejecutivas
res = self._query_report(cr, uid)
elements = self._report_table(cr, uid, res, elements, title=u'Sin ejecutiva responsable')
# PDF
pdfreport_fd, pdfreport_path = tempfile.mkstemp(suffix='.pdf', prefix='reporte.cobranza.consol.')
body_html = 'Hola <b>%s</b>, <p>Se adjunta el reporte semanal de cobranza consolidado.</p>' % manager.name
doc = SimpleDocTemplate(pdfreport_path, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30,
bottomMargin=18)
doc.pagesize = landscape(A4)
doc.build(elements)
attachments = [[title, pdfreport_path]]
# EMAIL
self.send_mail(cr, uid, attachments=attachments, email_to=email, subject=title,
html=body_html, force_send=True)
return True
示例2: make_pdf
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def make_pdf(filename, parameter):
parameter = read_result(parameter)
doc = SimpleDocTemplate(filename, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30, bottomMargin=18)
doc.pagesize = landscape(A4)
elements = []
data = [['Number', 'Value']]
write_data(parameter, data)
style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
('TEXTCOLOR',(1,1),(-2,-2),colors.red),
('VALIGN',(0,0),(0,-1),'TOP'),
('TEXTCOLOR',(0,0),(0,-1),colors.blue),
('ALIGN',(0,-1),(-1,-1),'CENTER'),
('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
])
s = getSampleStyleSheet()
s = s["BodyText"]
s.wordWrap = 'CJK'
data2 = [[Paragraph(cell, s) for cell in row] for row in data]
t = Table(data2)
t.setStyle(style)
elements.append(t)
doc.build(elements)
示例3: buildTable
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def buildTable(data):
doc = SimpleDocTemplate("MOOSE_requirements_tracability.pdf", pagesize=A4, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
doc.pagesize = landscape(A4)
elements = []
#Configure style and word wrap
s = getSampleStyleSheet()
s = s["BodyText"]
s.wordWrap = 'CJK'
pdf_data = [["Requirement", "Description", "Test Case(s)"]]
#TODO: Need a numerical sort here
keys = sorted(data.keys())
for key in keys:
data[key][2] = '\n'.join(data[key][2])
pdf_data.append([Paragraph(cell, s) for cell in data[key]])
# Build the Table and Style Information
tableThatSplitsOverPages = Table(pdf_data, 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,colors.black),
('BOX',(0,0),(-1,-1),1,colors.black),
('BOX',(0,0),(0,-1),1,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.build(elements)
示例4: generatePdfReport
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def generatePdfReport(data):
"""
Function to generate report in PDF format.
Input:- Details of aliens
Output:- Details of aliens in PDF file.
"""
doc = SimpleDocTemplate("aliens.pdf", pagesize=A4, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
doc.pagesize = landscape(A4)
elements = []
# Style of table, imported from reportlab lib.
# user styling, can be anything you want.
style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
('TEXTCOLOR',(1,1),(-2,-2),colors.red),
('VALIGN',(0,0),(0,-1),'TOP'),
('TEXTCOLOR',(0,0),(0,-1),colors.blue),
('ALIGN',(0,-1),(-1,-1),'CENTER'),
('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
])
#Configure style and word wrap
s = getSampleStyleSheet()
s = s["BodyText"]
s.wordWrap = 'CJK' # to fit text in the cell, otherwise cross the margin
data2 = [[Paragraph(cell, s) for cell in row] for row in data]
t=Table(data2)
t.setStyle(style)
#Send the data and build the file
elements.append(t)
doc.build(elements)
示例5: render
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def render(self):
elements = []
self.styles['Title'].alignment = TA_LEFT
self.styles['Title'].fontName = self.styles['Heading2'].fontName = "Helvetica"
self.styles["Normal"].fontName = "Helvetica"
self.styles["Normal"].fontSize = 10
self.styles["Normal"].fontWeight = "BOLD"
filename = self.filename + datetime.now().strftime("%Y%m%d%H%M%S") + ".pdf"
doc = SimpleDocTemplate(filename)
elements.append(Paragraph(self.title, self.styles['Title']))
clinics = Provider.objects.values('clinic').distinct()
for data in self.data:
elements.append(data)
#elements.append(Paragraph("Created: %s" % datetime.now().strftime("%d/%m/%Y"), styles["Normal"]))
if self.landscape is True:
doc.pagesize = landscape(A4)
doc.build(elements, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages)
response = HttpResponse(mimetype='application/pdf')
response['Cache-Control'] = ""
response['Content-Disposition'] = "attachment; filename=%s" % filename
response.write(open(filename).read())
os.remove(filename)
return response
示例6: print_big_list
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def print_big_list(data):
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'inline; filename="RECAP.pdf"'
doc = SimpleDocTemplate(response, rightMargin=20, leftMargin=20, topMargin=20, bottomMargin=20)
doc.pagesize = landscape(A4)
elements = []
t = Table(data, colWidths=(None, None, 300, 60))
# Styling the titles and the grid
style = TableStyle([('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
('ALIGN', (0, 0), (-1, 0), 'CENTER'),
('INNERGRID', (0, 0), (-1, -1), 0.25, colors.grey),
('BOX', (0, 0), (-1, -1), 0.25, colors.grey),
])
t.setStyle(style)
# we color lines alternatively
for each in range(len(data)):
if each % 2 == 0:
bg_color = colors.white
else:
bg_color = colors.lightblue
t.setStyle(TableStyle([('BACKGROUND', (0, each), (-1, each), bg_color)]))
# Send the data and build the file
elements.append(t)
doc.build(elements)
return response
示例7: generate_week_report
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def generate_week_report(self, cr, uid):
user_ids = self._get_user(cr, uid, group1=True)
if user_ids:
for user in user_ids:
res = self._query_report(cr, uid, user_id=user.id)
if res:
email = user.email if self.validate_email(user.email) else None
# CONTENT
styles = getSampleStyleSheet()
elements = []
title = u'Reporte Semanal de Cobranza'
style_h_one = styles['Heading1']
elements.append(Paragraph(title, style_h_one))
elements.append(Spacer(1, 0.25 * inch))
# PDF
pdfreport_fd, pdfreport_path = tempfile.mkstemp(suffix='.pdf', prefix='reporte.cobranza.')
body_html = 'Hola <b>%s</b>, <p>Se adjunta el reporte de cobranza de la semana.</p>' % user.name
doc = SimpleDocTemplate(pdfreport_path, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30,
bottomMargin=18)
doc.pagesize = landscape(A4)
doc.build(self._report_table(cr, uid, res, elements))
attachments = [[title, pdfreport_path]]
# EMAIL
self.send_mail(cr, uid, attachments=attachments, email_to=email, subject=title,
html=body_html, force_send=True)
return True
示例8: PrintPdf
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def PrintPdf(projectNo, probeInf, holelist, index=None):
import os
from config import basedir
cptPath = os.path.join(basedir, 'app', 'static', 'download')
if not os.path.exists(cptPath):
os.makedirs(cptPath)
doc = SimpleDocTemplate(cptPath,
pagesize=A4,
rightMargin=10,
leftMargin=20,
topMargin=30,
bottomMargin=20
)
doc.pagesize = portrait(A4)
filename = ''
elements = []
for i in range(len(holelist)):
if index is not None:
i = index
filename = projectNo + '__' + holelist[i].holeName + '.pdf'
# Attenion:where elments.extend must be used,but not elements.append
elements.extend(Cpt2Pdf(holelist[i], probeInf))
break;
else:
filename = projectNo + '__' + 'all.pdf'
# Attenion:where elments.extend must be used,but not elements.append
elements.extend(Cpt2Pdf(holelist[i], probeInf))
doc.filename = os.path.join(cptPath, filename)
print("dd" + doc.filename)
doc.build(elements)
# url='/'.join(['download',projectNo,filename])
# os.path.join('download',projectNo,filename)将返回download\projectNo\filename,浏览器无法识别
return doc.filename
示例9: pre_save_enrollment
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def pre_save_enrollment(signal, sender, instance, **kwargs):
images_path = os.path.join(settings.PROJECT_DIR, 'static_files', 'img')
signature_path = os.path.join(images_path, 'signature.jpg')
logo_path = os.path.join(images_path, 'cert_logo.png')
context = {
'enrollment': instance,
'domain': Site.objects.get_current().domain,
'signature_path': signature_path,
'logo_path': logo_path,
}
certificate_txt = render_to_string('certificates/certificate.txt', context)
elements = []
styles = getSampleStyleSheet()
styles.add(
ParagraphStyle(
name='Justify', alignment=TA_JUSTIFY, fontSize=16, leading=22
)
)
elements.append(Spacer(1, 16))
paragraphs = certificate_txt.split("\n")
for p in paragraphs:
if p.strip():
elements.append(Paragraph(p, styles['Justify']))
elements.append(Spacer(1, 16))
output = StringIO.StringIO()
doc = SimpleDocTemplate(output, topMargin=3 * cm, bottomMargin=0)
doc.pagesize = landscape(A4)
doc.build(elements)
filename = u'{0}.pdf'.format(instance.name)
pdf = output.getvalue()
instance.certificate.save(filename, ContentFile(pdf), save=False)
示例10: pdf_jeu_genre
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def pdf_jeu_genre(request):
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'inline; filename="jeu_genre.pdf"'
doc = SimpleDocTemplate(response, rightMargin=20, leftMargin=20, topMargin=20, bottomMargin=20)
doc.pagesize = A4
elements = []
# Get data
games = Game.objects.filter(owner__is_bringing=True).distinct()
data = [
["JEU", "GENRE", "", "JEU", "GENRE"],
]
styles = getSampleStyleSheet()
# We build the data
l = len(games)
if l % 2 == 0:
sc = l/2
else:
sc = l/2+1
for i in range(sc):
# in case we have an odd number of elements, we display the last line
if l % 2 != 0 and i == l/2:
data.append([Paragraph(games[i].name, styles['BodyText']), games[i].type_genre, "", "", ""])
elif i < l:
data.append([Paragraph(games[i].name, styles['BodyText']), games[i].type_genre, "", Paragraph(games[i+sc].name, styles['BodyText']), games[i+sc].type_genre])
t = Table(data, colWidths=(None, 60, 50, None, 60))
# Styling the titles and the grid
style = TableStyle([('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
('ALIGN', (0, 0), (-1, 0), 'CENTER'),
('INNERGRID', (0, 0), (1, -1), 0.25, colors.grey),
('INNERGRID', (3, 0), (-1, -1), 0.25, colors.grey),
('BOX', (0, 0), (1, -1), 0.25, colors.grey),
('BOX', (3, 0), (-1, -1), 0.25, colors.grey),
])
t.setStyle(style)
# we color lines alternatively
for each in range(len(data)):
if each % 2 == 0:
bg_color = colors.white
else:
bg_color = colors.lightblue
t.setStyle(TableStyle([('BACKGROUND', (0, each), (1, each), bg_color)]))
t.setStyle(TableStyle([('BACKGROUND', (3, each), (-1, each), bg_color)]))
# Send the data and build the file
elements.append(t)
doc.build(elements)
return response
示例11: gen_pdf
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def gen_pdf(questions, game_rounds):
"""generate speaker PDF"""
styles = getSampleStyleSheet()
doc = SimpleDocTemplate("pngs-speaker.pdf")
doc.pagesize = landscape(A5)
style = styles["Normal"]
page_elements = []
for round in game_rounds:
for num, question in enumerate(
questions_per_round(questions, game_round=round)):
q_data = question.as_pdf_dict
page_elements.append(
Paragraph("<em>Game Round</em>: {0}".format(round),
style)
)
page_elements.append(Spacer(0, 0.1*cm))
page_elements.append(
Paragraph(
"<font size=12><em>Question {0}:</em> <bold>{1}</bold>"
"</font>".format(num + 1, q_data['text'].encode('utf-8')),
style)
)
page_elements.append(Spacer(0, 0.2*cm))
page_elements.append(
Paragraph("<em>Comment</em>: {0}".format(q_data.get('comment').encode('utf-8')),
style)
)
page_elements.append(Spacer(0, 0.2*cm))
page_elements.append(
Paragraph("<em>Answers</em>:",
style)
)
page_elements.append(
Paragraph("* " + "<br />* ".join([unicode(t['text']) for t in q_data['answers']]),
style)
)
page_elements.append(
Paragraph("<em>Points</em>: {0}".format(q_data.get('tier')),
style)
)
page_elements.append(PageBreak())
doc.build(page_elements)
return
Story = [Spacer(0, 1*cm)]
p = Paragraph("Blubber1", styles["Normal"])
Story.append(p)
p = Paragraph("Blubber2", styles["Normal"])
Story.append(p)
Story.append(Spacer(10, 5*cm))
p = Paragraph("Blubber3", styles["Normal"])
Story.append(p)
#doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)
doc.build(Story)
示例12: generate_pdf
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def generate_pdf(self):
""" Generate a pdf version of the pools."""
doc = SimpleDocTemplate("files/"+self.name + ".pdf", rightMargin=72, leftMargin=72,
topMargin=72, bottomMargin=18, showBoundary=1)
doc.pagesize=landscape(A4)
Story=[]
file_path="file_path"
date = time.ctime()
header_title="CDL - tableaux de poules"
number_pool="10"
field="Jc et Nath \n3080 Tervuren"
tournament="Double Mixte - Juniors - JUN"
#frames
frameTable = Frame(doc.leftMargin, doc.height*0.20,
doc.height-doc.rightMargin , 400,
leftPadding=0, rightPadding=0, id='normal')
def footer_header(canvas,doc):
"""Footer and header description"""
canvas.saveState()
canvas.setFont('Times-Roman',12)
#Header
header_y=doc.height + 72
canvas.drawString(20, header_y, date)
canvas.drawString(doc.width/2, header_y, header_title)
canvas.drawString(doc.leftMargin, header_y-20, "Numéro:")
canvas.drawString(doc.leftMargin+100, header_y-20, "Terrain:")
canvas.drawString(doc.leftMargin+5, header_y-45, number_pool)
canvas.drawString(doc.leftMargin+105, header_y-45, field)
canvas.drawString(doc.leftMargin+5, header_y-70, tournament)
#Footer
footer_y=10
canvas.drawString(25, footer_y, file_path)
canvas.drawString(doc.width , footer_y, "page %d" % doc.page)
canvas.restoreState()
#Table score
pools = Pool.objects.filter(tournament=self);
templates=[]
for pool in pools:
Story.append(Spacer(1, 48))
Story.append(self.pdf_pool(pool))
Story.append(NextPageTemplate(str(pool)))
Story.append(PageBreak())
templates.append(PageTemplate(id=str(pool),frames=frameTable,onPage=footer_header))
doc.addPageTemplates(templates)
doc.build(Story)
示例13: getDocument
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
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
示例14: write
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def write(self):
"""Assembles the final PDF and writes to disk."""
pdf_writer = pyPdf.PdfFileWriter()
if self.front_matter is not None:
front_matter = pyPdf.PdfFileReader(file(self.front_matter, "rb"))
for page in range(front_matter.getNumPages()):
pdf_writer.addPage(front_matter.getPage(page))
working_file = tempfile.NamedTemporaryFile(suffix=".pdf", delete=False)
doc = SimpleDocTemplate(working_file)
doc.pagesize = portrait(letter)
story = []
styles = getSampleStyleSheet()
for section in self.sections:
heading_text = section.heading
story.append(Paragraph(heading_text, styles["Heading1"]))
for content in section.contents:
if "figure" in content:
figure = content["figure"]
if os.path.exists(figure):
im = utils.ImageReader(figure)
img_width, img_height = im.getSize()
aspect = img_height / float(img_width)
story.append(Image(figure, width=img_width, height=(img_width * aspect)))
if content.get("caption", None) is not None:
caption_text = "<font size=10>{0}</font>".format(content["caption"].strip())
story.append(Paragraph(caption_text, styles["Italic"]))
story.append(Spacer(1, 10))
if "table" in content:
_t = self.build_table(content["table"])
story.append(_t)
if content.get("caption", None) is not None:
caption_text = "<font size=10>{0}</font>".format(content["caption"].strip())
story.append(Paragraph(caption_text, styles["Italic"]))
story.append(Spacer(1, 10))
if "text" in content:
for para in content["text"]:
story.append(Paragraph(para, styles["Normal"]))
story.append(Spacer(1, 12))
doc.build(story)
body_matter = pyPdf.PdfFileReader(working_file)
for page in range(body_matter.getNumPages()):
pdf_writer.addPage(body_matter.getPage(page))
try:
os.remove(working_file.name)
except OSError: # Windows reports file in use, other OS errors, etc.
pass
if self.end_matter is not None:
end_matter = pyPdf.PdfFileReader(file(self.end_matter, "rb"))
for page in range(end_matter.getNumPages()):
pdf_writer.addPage(end_matter.getPage(page))
output_stream = file(self.output_filename, "wb")
pdf_writer.write(output_stream)
示例15: handle_pdf
# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def handle_pdf(self, request, queryset):
if "pdf" not in formats:
raise ImportError, "The site is not configured to handle pdf."
# this is again some quick and dirty sample code
elements = []
styles = getSampleStyleSheet()
styles["Title"].alignment = TA_LEFT
styles["Title"].fontName = styles["Heading2"].fontName = "Helvetica"
styles["Normal"].fontName = "Helvetica"
filename = mkstemp(".pdf")[-1]
doc = SimpleDocTemplate(filename)
doc.pagesize = pagesizes.landscape(pagesizes.LETTER)
request = WSGIRequest({"REQUEST_METHOD": "GET"})
site = RequestContext(request).get("site")
if site and site.get("title"):
elements.append(Paragraph(site.get("title"), styles["Title"]))
elements.append(Paragraph("%s List" % self.model.__name__, styles["Heading2"]))
data = []
header = False
for row in queryset:
if not header:
data.append([f["name"] for f in self.fields])
header = True
ctx = Context({"object": row})
values = [Template(h["bit"]).render(ctx) for h in self.fields]
data.append(values)
table = PDFTable(data)
table.setStyle(
TableStyle(
[
("ALIGNMENT", (0, 0), (-1, -1), "LEFT"),
("LINEBELOW", (0, 0), (-1, -0), 2, colors.black),
("LINEBELOW", (0, 1), (-1, -1), 0.8, colors.lightgrey),
("FONT", (0, 0), (-1, -1), "Helvetica"),
("ROWBACKGROUNDS", (0, 0), (-1, -1), [colors.whitesmoke, colors.white]),
]
)
)
elements.append(table)
elements.append(Paragraph("Created: %s" % datetime.now().strftime("%d/%m/%Y"), styles["Normal"]))
doc.build(elements)
response = HttpResponse(mimetype="application/pdf")
response["Content-Disposition"] = "attachment; filename=report.pdf"
response.write(open(filename).read())
os.remove(filename)
return response