本文整理汇总了Python中reportlab.platypus.SimpleDocTemplate类的典型用法代码示例。如果您正苦于以下问题:Python SimpleDocTemplate类的具体用法?Python SimpleDocTemplate怎么用?Python SimpleDocTemplate使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SimpleDocTemplate类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GenPDF
def GenPDF(tablename, head, result):
stylesheet = getSampleStyleSheet()
elements = []
response = HttpResponse(content_type="application/octet-stream")
response["Content-Disposition"] = 'attachment;filename="test.pdf"'
doc = SimpleDocTemplate(response)
headname = '<font name="hei">' + str(tablename) + "表格</font>"
# headname = '<font name="hei">%s表格</font>' % tablename
elements.append(Paragraph(headname, stylesheet["Title"]))
elements.append(Spacer(1, 12))
data = []
data.append(head)
for l in result:
row = [l[key] for key in head]
data.append(row)
ts = [
("INNERGRID", (0, 0), (-1, -1), 0.25, colors.black),
("BOX", (0, 0), (-1, -1), 0.25, colors.black),
("FONT", (0, 0), (-1, -1), "hei"),
]
table = Table(data, 6.3 / len(head) * inch, 0.24 * inch, ts)
elements.append(table)
doc.build(elements)
return response
示例2: make_suggested_starts
def make_suggested_starts(phage_genes, phage_name, file_path):
"""
Creates a PDF page of the suggested starts of a phage
Genes are list in order
{Gene Name} is a member of Pham {Number}: {Suggested Start Coordinates}
"""
file_name = os.path.join(file_path, "%sSuggestedStarts.pdf" % (phage_name))
if check_file(file_name):
return
doc = SimpleDocTemplate(file_name, pagesize=letter)
story = []
print "making suggested starts page"
styles = getSampleStyleSheet()
styles.add(ParagraphStyle(name="paragraph"))
styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
text = '<font size=14> Suggested Start Coordinates</font>'
story.append(Paragraph(text, styles['Center']))
story.append(Spacer(1, 12))
for gene_id in sorted(phage_genes.iterkeys()):
phage_gene = phage_genes[gene_id]
pham = phage_gene["pham_no"]
gene = phage_gene["gene"]
suggested_start = phage_gene["suggested_start"]
if pham == None:
text = '<font size=12> %s is not a member of an existing Pham </font>' % (gene.gene_id)
else:
text = '<font size=12> %s is a member of Pham %s: %s </font>' % (gene.gene_id, pham, suggested_start)
story.append(Paragraph(text, styles['Normal']))
doc.build(story)
示例3: generate
def generate(cls, pdf_input_data: dict):
# setup
self = cls()
reports = pdf_input_data.get('reports', [])
matches = pdf_input_data.get('matches', [])
report_buffer = BytesIO()
doc = SimpleDocTemplate(
report_buffer,
pagesize=letter,
rightMargin=72, leftMargin=72,
topMargin=72, bottomMargin=72,
)
# content fill
self.pdf_elements.extend(self.cover_page())
self.pdf_elements.extend(self.report_pages(reports))
self.pdf_elements.extend(self.match_pages_empty_identifier(matches))
# teardown
doc.build(
self.pdf_elements,
canvasmaker=NumberedCanvas,
)
result = report_buffer.getvalue()
report_buffer.close()
return result
示例4: test
def test():
doc = SimpleDocTemplate("test.pdf")
story = []
style = Style(fontName="Helvetica", textIndent=24.0)
fn = style["fontName"]
fs = style["fontSize"]
sampleText1 = createText(TEXT[:100], fn, fs)
sampleText2 = createText(TEXT[100:], fn, fs)
text = Text(sampleText1 + makeSpecial(fn, fs) + sampleText2)
story.append(Paragraph(
copy.copy(text),
style,
debug=0))
if 0:
for i in range(10):
style = copy.deepcopy(style)
style["textAlign"] = ALIGNMENTS[i % 4]
text = createText(("(%d) " % i) + TEXT, fn, fs)
story.append(Paragraph(
copy.copy(text),
style,
debug=0))
doc.build(story)
示例5: __init__
def __init__(self, invoice_path, pdf_info=None):
if not pdf_info:
pdf_info = self.default_pdf_info
SimpleDocTemplate.__init__(
self,
invoice_path,
pagesize=letter,
rightMargin=inch,
leftMargin=inch,
topMargin=inch,
bottomMargin=inch,
**pdf_info.__dict__
)
self._defined_styles = getSampleStyleSheet()
self._defined_styles.add(
ParagraphStyle('RightHeading1', parent=self._defined_styles.get('Heading1'), alignment=TA_RIGHT)
)
self._defined_styles.add(
ParagraphStyle('TableParagraph', parent=self._defined_styles.get('Normal'), alignment=TA_CENTER)
)
self.invoice_info = None
self.service_provider_info = None
self.client_info = None
self.is_paid = False
self._items = []
self._item_tax_rate = None
self._transactions = []
self._story = []
self._bottom_tip = None
self._bottom_tip_align = None
示例6: outputtopdf
def outputtopdf(outputfile,title,labels,db,resdb):
import logging
log = logging.getLogger('outputtopdf')
try:
from reportlab.platypus import TableStyle, Table, SimpleDocTemplate, Paragraph
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.pdfgen import canvas
except ImportError:
log.error('Reportlab was not found. To export to pdf you need to have reportlab installed. Check out www.reportlab.org')
return
log.debug('ok reportlab library found')
styles = getSampleStyleSheet()
rows=list()
rows.append(labels)
for k in db.keys():
cols = [k,db[k]]
if resdb is not None:
if resdb.has_key(k):
cols.append(resdb[k])
else:
cols.append('N/A')
rows.append(cols)
t=Table(rows)
mytable = TableStyle([('BACKGROUND',(0,0),(-1,0),colors.black),
('TEXTCOLOR',(0,0),(-1,0),colors.white)])
t.setStyle(mytable)
doc = SimpleDocTemplate(outputfile)
elements = []
style = styles["Heading1"]
Title = Paragraph(title,style)
elements.append(Title)
elements.append(t)
doc.build(elements)
示例7: generar_pdf
def generar_pdf(request):
print "Genero el PDF"
response = HttpResponse(content_type='application/pdf')
pdf_name = "productos.pdf" # llamado clientes
# la linea 26 es por si deseas descargar el pdf a tu computadora
# response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name
buff = BytesIO()
doc = SimpleDocTemplate(buff,
pagesize=letter,
rightMargin=40,
leftMargin=40,
topMargin=60,
bottomMargin=18,
)
productos = []
styles = getSampleStyleSheet()
header = Paragraph(" Listado de Productos", styles['Heading1'])
productos.append(header)
headings = ('Proveedor','Categoria','Nombre','Modelo','Marca','Stock A', 'Stock M', 'Precio P', 'Precio V')
allproductos = [(p.prov_cedula, p.cat_id, p.pro_nombre, p.pro_modelo,p.pro_marca,p.pro_stocka,p.pro_stockm,p.pro_precio,p.pro_preciov) for p in Producto.objects.all()]
print allproductos
t = Table([headings] + allproductos)
t.setStyle(TableStyle(
[
('GRID', (0, 0), (9, -1), 1, colors.springgreen),
('LINEBELOW', (0, 0), (-1, 0), 2, colors.springgreen),
('BACKGROUND', (0, 0), (-1, 0), colors.springgreen)
]
))
productos.append(t)
doc.build(productos)
response.write(buff.getvalue())
buff.close()
return response
示例8: generar_pdforden
def generar_pdforden(request):
print "Genero el PDF"
response = HttpResponse(content_type='application/pdf')
pdf_name = "ordenes.pdf" # llamado clientes
# la linea 26 es por si deseas descargar el pdf a tu computadora
# response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name
buff = BytesIO()
doc = SimpleDocTemplate(buff,
pagesize=letter,
rightMargin=40,
leftMargin=40,
topMargin=60,
bottomMargin=18,
)
productos = []
styles = getSampleStyleSheet()
header = Paragraph(" Listado de Ordenes de Trabajo", styles['Heading1'])
productos.append(header)
headings = ('Cliente','Numero','Fecha Recepcion','Fecha Entrega','Tipo','Precio', 'Estado')
allproductos = [(p.cli_cedula, p.ord_numero, p.ord_fechar, p.ord_fechae,p.ord_tipo,p.ord_precio,p.ord_estado) for p in OrdenTrabajo.objects.all()]
print allproductos
t = Table([headings] + allproductos)
t.setStyle(TableStyle(
[
('GRID', (0, 0), (9, -1), 1, colors.springgreen),
('LINEBELOW', (0, 0), (-1, 0), 2, colors.springgreen),
('BACKGROUND', (0, 0), (-1, 0), colors.springgreen)
]
))
productos.append(t)
doc.build(productos)
response.write(buff.getvalue())
buff.close()
return response
示例9: __init__
def __init__(self, filename, title_left, title_right, portrait=True):
if portrait is True:
page_size = A4
column_width = 8*cm
else:
page_size = landscape(A4)
column_width = 13*cm
SimpleDocTemplate.__init__(self, filename, pagesize=page_size,
topMargin=0*cm,
leftMargin=2 * cm,
rightMargin=2 * cm,
bottomMargin=0.5 * cm,
)
self.fileName = filename
im1 = Image(settings.MEDIA_ROOT + 'logo_EPC.png', width=170, height=80, hAlign=TA_LEFT)
data = list()
data.append([im1, ''])
data.append([Spacer(0, 0.5*cm)])
data.append([title_left, title_right])
t = Table(data, colWidths=[column_width]*2, hAlign=TA_LEFT)
t.setStyle(
TableStyle(
[
('SIZE', (0, 0), (-1, -1), 9),
('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
('ALIGN', (0, 0), (0, 0), 'LEFT'),
('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
('LINEABOVE', (0, 0), (-1, -1), 0.5, colors.black),
('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.black),
]
)
)
self.flowable.append(t)
示例10: _render
def _render(self):
self.result = StringIO()
parser = xml.dom.minidom.parseString(self.xml)
title = parser.documentElement.tagName
doc = SimpleDocTemplate(self.result, pagesize=A4, title=title,
author='ERP, Fabien Pinckaers', leftmargin=10*mm, rightmargin=10*mm)
styles = reportlab.lib.styles.getSampleStyleSheet()
title_style = copy.deepcopy(styles["Heading1"])
title_style.alignment = reportlab.lib.enums.TA_CENTER
story = [ Paragraph(title, title_style) ]
style_level = {}
nodes = [ (parser.documentElement,0) ]
while len(nodes):
node = nodes.pop(0)
value = ''
n=len(node[0].childNodes)-1
while n>=0:
if node[0].childNodes[n].nodeType==3:
value += node[0].childNodes[n].nodeValue
else:
nodes.insert( 0, (node[0].childNodes[n], node[1]+1) )
n-=1
if not node[1] in style_level:
style = copy.deepcopy(styles["Normal"])
style.leftIndent=node[1]*6*mm
style.firstLineIndent=-3*mm
style_level[node[1]] = style
story.append( Paragraph('<b>%s</b>: %s' % (node[0].tagName, value), style_level[node[1]]))
doc.build(story)
return self.result.getvalue()
示例11: drawPage
def drawPage(meta):
"""
Creates cover page
"""
def coverPage(canvas, doc):
"""
Cover page format
"""
canvas.saveState()
canvas.setFont('Times-Bold',16)
canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-108, Title)
canvas.setFont('Times-Roman',9)
canvas.restoreState()
# PDF Parameters
PAGE_HEIGHT=defaultPageSize[1]; PAGE_WIDTH=defaultPageSize[0]
styles = getSampleStyleSheet()
Title = 'FITS Summary'
# Create cover page
doc = SimpleDocTemplate('%s%s_meta.pdf' %(outDir, filename))
content = [Spacer(1,2*inch)]
style = styles["Normal"]
for key in sorted(meta.keys()):
text = ("%s: %s \n" % (key, meta[key]))
p = Paragraph(text, style)
content.append(p)
doc.build(content, onFirstPage = coverPage)
示例12: get_output_one_pham
def get_output_one_pham(pham, pham_no, config):
"""
Creates a PDF Report for the specific pham.
From Start sites statisitics
"""
output_dir = config['intermediate_file_dir']
doc = SimpleDocTemplate("%s%sPham%sText.pdf" % (output_dir, phage+one_or_all, pham_no), pagesize=letter)
story = []
styles = getSampleStyleSheet()
styles.add(ParagraphStyle(name="paragraph"))
styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
text = '<font size=14> Pham %s Report </font>' % pham_no
story.append(Paragraph(text, styles['Center']))
story.append(Spacer(1, 12))
output = pham.output_start_sites()
for line in output:
if line == '':
story.append(Spacer(1, 12))
text = '<font size=12> %s </font>' % line
story.append(Paragraph(text, styles['Normal']))
suggested_start = pham.output_suggested_starts()
story.append(Spacer(1, 12))
for line in suggested_start:
text = '<font size=12>%s</font>' % line
story.append(Paragraph(text, styles["Normal"]))
doc.build(story)
示例13: txt2PDF
def txt2PDF(path):
pdfmetrics.registerFont(TTFont('song', 'SURSONG.TTF'))
pdfmetrics.registerFont(TTFont('hei', 'SIMHEI.TTF'))
fonts.addMapping('song', 0, 0, 'song')
fonts.addMapping('song', 0, 1, 'song')
fonts.addMapping('song', 1, 0, 'hei')
fonts.addMapping('song', 1, 1, 'hei')
f=file(path)
content = f.read()
contentList = content.split('\n')
#print contentList
stylesheet=getSampleStyleSheet()
normalStyle = copy.deepcopy(stylesheet['Normal'])
###设置PDF中文字字体
normalStyle.fontName ='hei' #字体为黑体
normalStyle.fontSize = 14.5 #字体大小
normalStyle.leading = 30 #行间距
normalStyle.firstLineIndent = 32 #首行缩进
story = []
for text in contentList:
#story.append(Paragraph(unicode(text, "utf-8" ), normalStyle))
#story.append(Paragraph(text.decode('utf-8'), normalStyle))
story.append(Paragraph(text.decode('gbk'), normalStyle))
pdfPath = path.split('.')[0] + '.pdf'
txtName = path.split('.')[0].split('/')[-1]
doc = SimpleDocTemplate(pdfPath,
rightMargin=20,leftMargin=20,
topMargin=20,
bottomMargin=20)
doc.build(story)
示例14: print_agenda
def print_agenda(request):
response = HttpResponse(mimetype='application/pdf')
filename = u'filename=%s.pdf;' % _("Agenda")
response['Content-Disposition'] = filename.encode('utf-8')
doc = SimpleDocTemplate(response)
story = [Spacer(1,3*cm)]
doc.title = _("Agenda")
# print item list
items = children_list(Item.objects.filter(parent=None).order_by('weight'))
for item in items:
if item.hidden is False:
# print all items"
if item.parents:
space = ""
counter = 0
for p in item.parents:
if counter != 0:
space += " "
counter += 1
story.append(Paragraph(space+item.title, stylesheet['Subitem']))
else:
story.append(Paragraph(item.title, stylesheet['Item']))
doc.build(story, onFirstPage=firstPage, onLaterPages=laterPages)
return response
示例15: reporte_contactos
def reporte_contactos(request):
print ("Genero el PDF");
response = HttpResponse(content_type='application/pdf')
pdf_name = "contactos.pdf" # llamado clientes
# la linea 26 es por si deseas descargar el pdf a tu computadora
# response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name
buff = BytesIO()
doc = SimpleDocTemplate(buff,
pagesize=letter,
rightMargin=40,
leftMargin=40,
topMargin=60,
bottomMargin=18,
)
contactos = []
styles = getSampleStyleSheet()
header = Paragraph("Listado de Contactos de Proveedores", styles['Heading1'])
contactos.append(header)
headings = ('Nombre','Telefono','Correo','Proveedor','Fecha Creacion')
allcontactos = [(c.nombre,c.telefono,c.correo,c.proveedor.nombre,c.fecha_creacion) for c in ContactoProveedor.objects.all()]
print (allcontactos);
t = Table([headings] + allcontactos)
t.setStyle(TableStyle(
[
('GRID', (0, 0), (12, -1), 1, colors.dodgerblue),
('LINEBELOW', (0, 0), (-1, 0), 2, colors.darkblue),
('BACKGROUND', (0, 0), (-1, 0), colors.dodgerblue)
]
))
contactos.append(t)
doc.build(contactos)
response.write(buff.getvalue())
buff.close()
return response