本文整理汇总了Python中reportlab.pdfgen.canvas.Canvas类的典型用法代码示例。如果您正苦于以下问题:Python Canvas类的具体用法?Python Canvas怎么用?Python Canvas使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Canvas类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_pdf
def get_pdf(self, text, use_design=False):
"""
Given the text, produces an A4 blank PDF with the text put in the
position given by the tranlsation box.
:param text: Text to put inside a translation box
:param use_design: Set to true to use a design in the background
:return: Rendered PDF
:rtype: pypdf.PdfFileReader if use_design is False or PdfFileWriter
"""
self.ensure_one()
packet = StringIO.StringIO()
can = Canvas(packet, bottomup=0)
text_wrap = self._wrap_text(text, can._fontname, can._fontsize)
top = self.top*inch
left = self.left*inch
for line in text_wrap[:self.nb_lines+1]:
can.drawString(left, top, line)
top += can._leading
can.save()
# Move to the beginning of the StringIO buffer
packet.seek(0)
remaining = ''
if len(text_wrap) > self.nb_lines:
remaining = ' '.join(text_wrap[self.nb_lines+1:])
out_pdf = PdfFileReader(packet)
if use_design:
design_pdf_path = self.env['ir.config_parameter'].get_param(
'sbc_compassion.composition_design')
if design_pdf_path:
design_pdf = PdfFileReader(file(design_pdf_path, 'rb'))
page = design_pdf.getPage(0)
page.mergePage(out_pdf.getPage(0))
out_pdf = PdfFileWriter()
out_pdf.addPage(page)
return out_pdf, remaining
示例2: test3
def test3(self):
'''compare CJK splitting in some edge cases'''
from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus.paragraph import Paragraph
from reportlab.lib.styles import ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.enums import TA_LEFT
sty = ParagraphStyle('A')
sty.fontSize = 15
sty.leading = sty.fontSize*1.2
sty.fontName = 'Courier'
sty.alignment = TA_LEFT
sty.wordWrap = 'CJK'
p0=Paragraph('ABCDEFGHIJKL]N',sty)
p1=Paragraph('AB<font color="red">C</font>DEFGHIJKL]N',sty)
canv = Canvas('test_platypus_paragraph_cjk3.pdf')
ix = len(canv._code)
aW = pdfmetrics.stringWidth('ABCD','Courier',15)
w,h=p0.wrap(aW,1000000)
y = canv._pagesize[1]-72-h
p0.drawOn(canv,72,y)
w,h=p1.wrap(aW,1000000)
y -= h+10
p1.drawOn(canv,72,y)
w,h=p0.wrap(aW*0.25-2,1000000)
y -= h+10
p0.drawOn(canv,72,y)
w,h=p1.wrap(aW/4.-2,1000000)
y -= h+10
p1.drawOn(canv,72,y)
assert canv._code[ix:]==['q', '1 0 0 1 72 697.8898 cm', 'q', '0 0 0 rg', 'BT 1 0 0 1 0 57 Tm /F2 15 Tf 18 TL (ABCD) Tj T* (EFGH) Tj T* (IJKL]) Tj T* (N) Tj T* ET', 'Q', 'Q', 'q', '1 0 0 1 72 615.8898 cm', 'q', 'BT 1 0 0 1 0 57 Tm 18 TL /F2 15 Tf 0 0 0 rg (AB) Tj 1 0 0 rg (C) Tj 0 0 0 rg (D) Tj T* (EFGH) Tj T* (IJKL]) Tj T* (N) Tj T* ET', 'Q', 'Q', 'q', '1 0 0 1 72 353.8898 cm', 'q', '0 0 0 rg', 'BT 1 0 0 1 0 237 Tm /F2 15 Tf 18 TL (A) Tj T* (B) Tj T* (C) Tj T* (D) Tj T* (E) Tj T* (F) Tj T* (G) Tj T* (H) Tj T* (I) Tj T* (J) Tj T* (K) Tj T* (L) Tj T* (]) Tj T* (N) Tj T* ET', 'Q', 'Q', 'q', '1 0 0 1 72 91.88976 cm', 'q', 'BT 1 0 0 1 0 237 Tm 18 TL /F2 15 Tf 0 0 0 rg (A) Tj T* (B) Tj T* 1 0 0 rg (C) Tj T* 0 0 0 rg (D) Tj T* (E) Tj T* (F) Tj T* (G) Tj T* (H) Tj T* (I) Tj T* (J) Tj T* (K) Tj T* (L) Tj T* (]) Tj T* (N) Tj T* ET', 'Q', 'Q']
canv.showPage()
canv.save()
示例3: print_cards
def print_cards(self, issues):
"""
Generate a PDF file with the changed issues
In the final version of this service, it will send the issue data to the
print service via REST instead of doing all of this file IO
Returns the name of the file created.
@TODO: this writes a file - defer it to a thread
"""
if not issues:
return
print >>sys.stdout, "Printing %s cards" % (len(issues))
sys.stdout.flush()
output_file = datetime.now().strftime("%Y-%m-%d-%H%M%S")+'.pdf'
# 5 x 3 index card size
page_width = 5*inch
page_height = 3*inch
canvas = Canvas(output_file, pagesize=(page_width, page_height))
for issue in issues:
# print >>sys.stdout, pprint.pformat(issue)
# sys.stdout.flush()
issue_type = self.types.get(issue['type'], 'Unknown')
icon = icons.get(issue_type, icons['Unknown'])
issue_priority = self.priorities.get(issue['priority'], 'Unknown')
priority_icon = priority_icons.get(issue_priority, priority_icons['Unknown'])
priority_color = priority_colors.get(issue_priority, priority_colors['Unknown'])
story_info = {
'summary': issue['summary'],
'detail': issue.get('description', ''),
'id': issue['key'],
'type': issue_type,
'reporter': self.users[issue['reporter']]['fullname'],
'date': datetime.strptime(issue['created'], "%Y-%m-%d %H:%M:%S.0"),
'icon': icon,
'priority_icon': priority_icon,
'header_bg_color': priority_color,
}
story_info['formatted_date'] = story_info['date'].strftime('%m/%d @ %I:%M %p')
add_card(canvas, story_info, page_width, page_height);
canvas.save()
print >>sys.stdout, "Wrote %s" % (output_file)
sys.stdout.flush()
return output_file
示例4: generate_chart
def generate_chart(chart, filename):
if filename.lower().endswith(".pdf"):
format = "pdf"
elif filename.lower().endswith(".png"):
format = "png"
else:
print("Unsupported file format: " + filename)
return
if format == "pdf":
output = Canvas(filename)
elif format == "png":
image = Image.new("RGB", (CHART_WIDTH, CHART_HEIGHT),
"#ffffff")
output = ImageDraw.Draw(image)
renderer.draw(format, "title", chart, output)
renderer.draw(format, "x_axis", chart, output)
renderer.draw(format, "y_axis", chart, output)
if chart['series_type'] == "bar":
renderer.draw(format, "bar_series", chart, output)
elif chart['series_type'] == "line":
renderer.draw(format, "line_series", chart, output)
if format == "pdf":
output.showPage()
output.save()
elif format == "png":
image.save(filename, format="png")
示例5: get_chart
def get_chart(self, chart, fmt, data, width=1000, params=None):
chart = BytesIO()
canvas = Canvas(chart, pagesize=(140, 140))
canvas.drawString(10, 70, "This is a diagram")
canvas.save()
chart.seek(0)
return chart
示例6: __init__
def __init__(self, *args, **kwargs):
self._nc_x = kwargs.pop('x')
self._nc_y = kwargs.pop('y')
self._nc_text = kwargs.pop('text')
Canvas.__init__(self, *args, **kwargs)
self._codes = []
示例7: generer_coupons
def generer_coupons(output_file, coupon):
"""
:param output_file: File
:param coupon: Coupon
:return:
"""
# Styles
styles = StyleSheet()
styles.add_style('normal', fontName='Helvetica', fontSize=14)
styles.add_style('normal-centered', fontName='Helvetica', fontSize=14,
alignment=TA_CENTER)
styles.add_style('normal-bold', fontName='Helvetica-bold', fontSize=14)
styles.add_style('grand', fontName='Helvetica', fontSize=18)
styles.add_style('grand-bold', fontName='Helvetica-bold', fontSize=18)
styles.add_style('petit', fontName='Helvetica', fontSize=12)
styles.add_style('petit-bold', fontName='Helvetica-bold', fontSize=12)
styles.add_style('titre', fontName='Helvetica-Bold', fontSize=15)
styles.add_style('centered', alignment=TA_CENTER)
styles.add_style('remarque', fontName='Helvetica-Oblique', fontSize=11)
styles.add_style('gros-numero', fontName='Helvetica-Bold', fontSize=36)
styles.add_style('right-aligned', alignment=TA_RIGHT)
canvas = Canvas(output_file, pagesize=PAGESIZE)
draw_coupon(canvas, styles, coupon.nom_participant, coupon.noms_invites,
coupon.infos_depart_arrivee.depart_date,
coupon.infos_depart_arrivee.depart_de,
'depart', coupon.nb_personnes)
draw_coupon(canvas, styles, coupon.nom_participant, coupon.noms_invites,
coupon.infos_depart_arrivee.arrivee_date,
coupon.infos_depart_arrivee.arrivee_a,
'arrivee', coupon.nb_personnes)
page_width, page_height = PAGESIZE
frame_height = 10 * cm
frame = Frame(COUPON_MARGIN_SIDE, calc_coupon_y('depart') - frame_height,
page_width - COUPON_MARGIN_SIDE * 2, frame_height)
frame.addFromList([Paragraph(u"""<br/><br/><u>Veuillez noter que les transferts en
navette ne s'effectuent que dans les conditions suivantes:</u><br/><br/>
À votre arrivée, les transferts en navette organisés des aéroports de
Casablanca et de Marrakech sont uniquement à destination du lieu de
l’Assemblée générale, le Palais des Congrès de l'hôtel Mogador Agdal 2.
<br/><b>Ces transferts ne sont disponibles que du 6 au 10 mai 2017.</b>
<br/><br/>
À votre départ, les transferts en navette oganisés à destination des
aéroports de Casablanca et de Marrakech se feront au même point qu'à
l'arrivée à l'hôtel Mogador Agdal 2.<br/>
<b>Ces transferts ne sont disponibles que du 12 au 15 mai 2017.</b>
<br/><br/>
Aucun autre arrêt n'est prévu durant ces trajets.
Si vous ne logez pas au Mogador Agdal 2, vous devez assurer, à vos
frais, votre déplacement entre votre hôtel et le lieu de l’Assemblée
générale.
<br/><br/>
<b>Adresse du Mogador Agdal 2:</b> Zone Touristique Agdal, Route d'Ourika,
Marrakech 40000, Maroc
<br/><br/>
<b>En cas de problème à l'arrivée, veuillez contacter:</b> <br/>Casablanca:
+212 6 89 91 77 19 Marrakech: +212 6 89 91 77 20
""", styles['remarque'])], canvas)
canvas.save()
示例8: __init__
def __init__(self, name, data):
self.name = name
self.states = data.get('cellStates')
self.signals = data.get('signals')
self.parents = data.get('lineage')
self.data = data
Canvas.__init__(self, name)
示例9: buildPDFx6
def buildPDFx6(marginmm, urls):
width = 6 * inch
height = 4 * inch
square = 2 * inch
margin = marginmm * mm
card_width = square-(margin * 2)
buffer = StringIO()
pdf = Canvas(buffer)
pdf.setPageSize((width,height))
def create_image(url):
for i in [1,2]:
try:
return ImageReader(url)
except IOError:
pass
return ImageReader(url)
def put_image(x,y,url):
if url != "":
img = create_image(url)
pdf.drawImage(img,(square*x)+margin,(square*y)+margin,
width=card_width, height=card_width)
put_image(0,1,urls[0])
put_image(0,0,urls[1])
put_image(1,1,urls[2])
put_image(1,0,urls[3])
put_image(2,1,urls[4])
put_image(2,0,urls[5])
pdf.save()
data = buffer.getvalue()
buffer.close()
return data
示例10: get_pdf
def get_pdf(self):
data = BytesIO()
canvas = Canvas(data, pagesize=self.page_size)
self._build_pdf(canvas)
canvas.save()
data.seek(0)
return data
示例11: myCanvasMaker
def myCanvasMaker(fn, **kw):
from reportlab.pdfgen.canvas import Canvas
canv = Canvas(fn, **kw)
# attach our callback to the canvas
canv.myOnDrawCB = myOnDrawCB
return canv
示例12: print_pdf
def print_pdf(request, tag_id, type):
from reportlab.pdfgen.canvas import Canvas
from labels.pdf_templates import LabelPDF
#Letter is a paper format, you can import A4 for example
from reportlab.lib.pagesizes import letter
tag = get_object_or_404(Tag, pk=tag_id)
#name of the pdf
fname = "mylabels.pdf"
#Generating response for file
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename=%s' %(fname)
#creating the canvas object. You can change "letter" with another paper type
c = Canvas(response, pagesize=letter)
#LabelPDF is the class in pdf_templates that draws on the pdf
pdf = LabelPDF(tag,type)
#pdf.showBoundary=1 # Turns this on for debugging purposes.
c = pdf.draw_frames(c)
c.save()
return response
tv = {'tag_id':tag_id}
return render_to_response("labels/print.html",tv)
示例13: run
def run(infile, outfile):
data = compile(infile)
c = Canvas(outfile,pagesize=pageSize,pageCompression=0)
lines(c)
left = notes(c, data)
c.showPage()
c.save()
示例14: test1
def test1():
c = Canvas('figures.pdf')
f = Frame(inch, inch, 6*inch, 9*inch, showBoundary=1)
v = PlatPropFigure1()
v.captionTextColor = toColor('blue')
v.captionBackColor = toColor('lightyellow')
f.addFromList([v],c)
c.save()
示例15: get_image_page
def get_image_page(image):
inch = 72
bio = BytesIO()
c = Canvas(bio, pagesize=(8.5*inch, 11*inch))
dim = c.drawImage(image, 0.5*inch, 6.3*inch, 495, 290)
# print(dim)
c.save()
return PdfFileReader(bio).getPage(0)