本文整理汇总了Python中reportlab.graphics.renderPDF.draw函数的典型用法代码示例。如果您正苦于以下问题:Python draw函数的具体用法?Python draw怎么用?Python draw使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了draw函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: hello
def hello(c, link):
c.translate(ORIGIN_X, ORIGIN_Y)
# Draw paragraph
stylesheet = getSampleStyleSheet()
style = stylesheet['BodyText']
style.fontName = 'LeagueGothic'
style.fontSize = 42
style.leading = 44
p = Paragraph('<b>print</b><br/>your<br/><b>badge</b><br/>here', style)
qr_left = 30*mm
p_w, p_h = p.wrap(qr_left, HEIGHT)
p.drawOn(c, 0, 0)
# Add QR Code
qr_code = qr.QrCodeWidget(link)
qr_bounds = qr_code.getBounds()
qr_width = qr_bounds[2] - qr_bounds[0]
qr_height = qr_bounds[3] - qr_bounds[1]
d = Drawing(HEIGHT, HEIGHT, transform=[HEIGHT/qr_width,0,0,HEIGHT/qr_height,0,0])
d.add(qr_code)
renderPDF.draw(d, c, qr_left, 0)
# Draw thin line between text and QR code
c.line(qr_left, 0, qr_left, HEIGHT)
c.line(qr_left + HEIGHT, 0, qr_left+HEIGHT, HEIGHT)
img_left = qr_left + HEIGHT
# Draw images
c.drawImage('images/ipv6.jpg', img_left, 0, 20*mm, 1/3 * HEIGHT, mask=None, preserveAspectRatio=True, anchor='c')
c.drawImage('images/ffrhein_logo_claim_line_rot.png', img_left, 1/3*HEIGHT, 20*mm, 2/3 * HEIGHT, mask=None, preserveAspectRatio=True, anchor='c')
示例2: draw_code128_questionnaire_id
def draw_code128_questionnaire_id(canvas, survey, id):
# Only supports ascii for now (see also defs.py)
barcode_value = unicode(id).encode('ascii')
barcode = createBarcodeDrawing("Code128",
value=barcode_value,
barWidth=defs.code128_barwidth / 25.4 * 72.0,
height=defs.code128_height / 25.4 * 72.0,
quiet=False)
y = survey.defs.paper_height - defs.corner_mark_bottom
x = defs.corner_mark_left
barcode_y = y - defs.code128_vpad - defs.code128_height
barcode_x = x + defs.code128_hpad
# The barcode should be flush left.
barcode_x = barcode_x
renderPDF.draw(barcode, canvas, barcode_x * mm, barcode_y * mm)
# Label
text_x = barcode_x + barcode.width / mm / 2.0
text_y = barcode_y + defs.code128_height + 1 + \
defs.code128_text_font_size / 72.0 * 25.4 / 2.0
canvas.saveState()
canvas.setFont(defs.code128_text_font, defs.code128_text_font_size)
canvas.drawCentredString(text_x * mm, text_y * mm, barcode_value)
canvas.restoreState()
示例3: createBarCodes
def createBarCodes(path, barcode_value):
from reportlab.graphics.barcode import eanbc
from reportlab.graphics.shapes import Drawing
from reportlab.pdfgen import canvas
from reportlab.graphics import renderPDF
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus.para import Paragraph
# draw the eanbc13 code
barcode_eanbc13 = eanbc.Ean13BarcodeWidget(barcode_value)
bounds = barcode_eanbc13.getBounds()
barcode_eanbc13.barHeight = 19*mm
width = bounds[2] - bounds[0]
height = bounds[3] - bounds[1]
d = Drawing()
d.add(barcode_eanbc13)
c = canvas.Canvas(path, pagesize=(43*mm, 25*mm))
# print width, height
text = "%s.%s" % (150, '00')
p = Paragraph(text, getSampleStyleSheet()["Normal"])
p.wrapOn(c, 43*mm, 5*mm)
p.drawOn(c, 16*mm, 20*mm)
renderPDF.draw(d, c, 3*mm, 1*mm)
c.save()
示例4: create_header
def create_header(self):
headerCanvas = Drawing()
headerRect = Rect(0, 0, width=self.width, height=50)
headerRect.fillColor = HexColor("#607D8B")
headerRect.strokeColor = HexColor("#607D8B")
headerCanvas.add(headerRect)
renderPDF.draw(headerCanvas, self.c, 0, self.height - 50)
_header_styles = ParagraphStyle(
"Header",
parent=self.styles["Heading1"],
textColor=white,
fontName='Helvetica'
)
p = Paragraph("Kit Trading Fund Report", style = _header_styles)
p.wrapOn(self.c, self.width, self.height - 50)
p.drawOn(self.c, *self.coord(75, 10, mm))
_sub_header_styles = ParagraphStyle(
"SubHeader",
parent=self.styles["Heading4"],
textColor=white,
fontName='Helvetica'
)
p = Paragraph("Monthly Report: January 2016", style = _sub_header_styles)
p.wrapOn(self.c, self.width, self.height - 50)
p.drawOn(self.c, *self.coord(85, 16, mm))
示例5: draw_qrcode
def draw_qrcode(self, value, x, y, size=40, halign=None, valign=None):
"""
Helper function to draw a QR code
@param value: the string to encode
@param x: drawing position
@param y: drawing position
@param size: the size (edge length) of the QR code
@param halign: horizontal alignment ("left"|"center"|"right"), default left
@param valign: vertical alignment ("top"|"middle"|"bottom"), default bottom
"""
qr_code = qr.QrCodeWidget(value)
bounds = qr_code.getBounds()
w = bounds[2] - bounds[0]
h = bounds[3] - bounds[1]
transform = [float(size) / w, 0, 0, float(size) / h, 0, 0]
d = Drawing(size, size, transform=transform)
d.add(qr_code)
hshift = vshift = 0
if halign == "right":
hshift = size
elif halign == "center":
hshift = float(size) / 2.0
if valign == "top":
vshift = size
elif valign == "middle":
vshift = float(size) / 2.0
renderPDF.draw(d, self.canv, x - hshift, y - vshift)
示例6: draw_qr_global_id
def draw_qr_global_id(canvas, survey):
if survey.global_id is None:
raise AssertionError
# Only allow ascii
value = survey.global_id.encode('ascii')
y = survey.defs.paper_height - defs.corner_mark_bottom
x = (survey.defs.paper_width - defs.corner_mark_right + defs.corner_mark_left) / 2
qr_code = qr.QrCodeWidget(value, barLevel='H')
bounds = qr_code.getBounds()
width = bounds[2] - bounds[0]
height = bounds[3] - bounds[1]
# Squeeze into the space between corner mark and content
size = defs.bottom_page_margin - defs.corner_mark_bottom
code_y = y
code_x = x - size / 2.0
d = Drawing(size*mm, size*mm, transform=[float(size*mm)/width,0,0,-float(size*mm)/height,0,0])
d.add(qr_code)
renderPDF.draw(d, canvas, code_x*mm, code_y*mm)
示例7: draw_code128_global_id
def draw_code128_global_id(canvas, survey):
if survey.global_id is None:
raise AssertionError
# Only allow ascii
barcode_value = survey.global_id.encode('ascii')
barcode = createBarcodeDrawing("Code128",
value=barcode_value,
barWidth=defs.code128_barwidth / 25.4 * 72.0,
height=defs.code128_height / 25.4 * 72.0,
quiet=False)
y = survey.defs.paper_height - defs.corner_mark_bottom
x = (survey.defs.paper_width - defs.corner_mark_right + defs.corner_mark_left) / 2
barcode_y = y - defs.code128_vpad - defs.code128_height
barcode_x = x
# Center
barcode_x = barcode_x - barcode.width / mm / 2.0
renderPDF.draw(barcode, canvas, barcode_x * mm, barcode_y * mm)
# Label
text_x = barcode_x + barcode.width / mm / 2.0
text_y = barcode_y + defs.code128_height + 1 + defs.code128_text_font_size / 72.0 * 25.4 / 2.0
canvas.saveState()
canvas.setFont(defs.code128_text_font, defs.code128_text_font_size)
canvas.drawCentredString(text_x * mm, text_y * mm, barcode_value)
canvas.restoreState()
示例8: draw_to_canvas
def draw_to_canvas(O, canvas):
if (reportlab is None): return
from reportlab.graphics.shapes import Drawing
from reportlab.graphics import renderPDF
drawing = Drawing(*O.page_size)
drawing.add(O.top_group)
renderPDF.draw(drawing=drawing, canvas=canvas, x=0, y=0)
示例9: render_diploma
def render_diploma(request, response, diploma):
design = diploma.design
c = canvas.Canvas(response)
marginLeft = 2 * cm
marginTop = 2 * cm
marginBottom = 2.5 * cm
cTop = 29.7 * cm - marginTop
cLeft = marginLeft
cMiddle = 21 * cm / 2
logoHeight = 1.4 * cm
pictureHeight = 2.5 * cm
text_value_map = {
'$grade': str(diploma.grade),
}
if design.logo:
c.drawImage(design.logo.path, cLeft, cTop - logoHeight, height=logoHeight, preserveAspectRatio=True, anchor="nw")
c.setFont("Helvetica-Bold", 30)
c.setFillColorRGB(0, 0.25, 0.5)
c.drawCentredString(10.5 * cm, cTop - 5 * cm, diploma.name)
c.setFont("Helvetica", 14)
c.setFillColorRGB(0, 0, 0)
for i,line in enumerate(text_lines(design.title, text_value_map)):
c.drawCentredString(cMiddle, cTop - 7 * cm - (i * 0.8 * cm), line)
c.setFont("Helvetica", 10)
c.setFillColorRGB(0, 0, 0)
for i,line in enumerate(text_lines(design.body, text_value_map)):
c.drawString(cLeft, cTop - 10 * cm - (i * 0.6 * cm), line)
c.setFont("Helvetica", 12)
c.setFillColorRGB(0, 0, 0)
c.drawString(cLeft, cTop - 21 * cm, design.date)
c.drawString(cLeft, cTop - 23.5 * cm, design.signature_name)
c.drawString(cLeft, cTop - 24 * cm, design.signature_title)
c.setFont("Helvetica", 7)
c.setFillColorRGB(0, 0, 0)
for i,line in enumerate(text_lines(design.small_print, text_value_map)):
c.drawString(cLeft, marginBottom - (i * 0.3 * cm), line)
qr_code = qr.QrCodeWidget(request.build_absolute_uri(diploma.get_absolute_url()))
bounds = qr_code.getBounds()
width = bounds[2] - bounds[0]
height = bounds[3] - bounds[1]
d = Drawing(1200, 1200, transform=[60./width,0,0,60./height,0,0])
d.add(qr_code)
renderPDF.draw(d, c, 16.7 * cm, cTop - 24.3 * cm)
c.showPage()
#c.setAuthor("A+")
c.setTitle("Course Diploma")
#c.setSubject("")
c.save()
示例10: draw_code128_sdaps_info
def draw_code128_sdaps_info(canvas, survey, page):
# The page number is one based here already
# The survey_id is a 32bit number, which means we need
# 10 decimal digits to encode it, then we need to encode the
# the page with at least 3 digits(just in case someone is insane enough
# to have a questionnaire with more than 99 pages.
# So use 10+4 digits
barcode_value = "%010d%04d" % (survey.survey_id, page)
barcode = createBarcodeDrawing("Code128",
value=barcode_value,
barWidth=defs.code128_barwidth / 25.4 * 72.0,
height=defs.code128_height / 25.4 * 72.0,
quiet=False)
y = survey.defs.paper_height - defs.corner_mark_bottom
x = survey.defs.paper_width - defs.corner_mark_right
barcode_y = y - defs.code128_vpad - defs.code128_height
barcode_x = x - defs.code128_hpad
# The barcode should be flush left.
barcode_x = barcode_x - barcode.width / mm
renderPDF.draw(barcode, canvas, barcode_x * mm, barcode_y * mm)
# Label
text_x = barcode_x + barcode.width / mm / 2.0
text_y = barcode_y + defs.code128_height + 1 + defs.code128_text_font_size / 72.0 * 25.4 / 2.0
canvas.saveState()
canvas.setFont(defs.code128_text_font, defs.code128_text_font_size)
canvas.drawCentredString(text_x * mm, text_y * mm, barcode_value)
canvas.restoreState()
示例11: make_pdf
def make_pdf(data):
page_width, page_height = A4
page_margin = 10.0
qr_width, qr_height = 60.0, 60.0
qr_margin = 5.0 # this is a desired margin, not the actual one
num_rows = int(math.floor((page_height - 2 * page_margin) / (qr_height + qr_margin)))
num_cols = int(math.floor((page_width - 2 * page_margin) / (qr_width + qr_margin)))
qr_vertical_margin = ((page_height - 2 * page_margin) - num_rows * qr_height) / num_rows
qr_horizontal_margin = ((page_width - 2 * page_margin) - num_cols * qr_width) / num_cols
qr = QrCodeWidget(data)
output = cStringIO.StringIO()
p = canvas.Canvas(output, pagesize=A4)
b = qr.getBounds()
w, h = b[2]-b[0], b[3]-b[1]
d = Drawing(qr_width, qr_height,
transform=[qr_width / w, 0, 0, qr_height / h, 0, 0])
d.add(qr)
for i in xrange(num_cols):
x = page_margin + i * (qr_horizontal_margin + qr_width)
for j in xrange(num_rows):
y = page_margin + j * (qr_vertical_margin + qr_height)
renderPDF.draw(d, p, x, y)
p.showPage()
p.save()
pdf_output = output.getvalue()
output.close()
return pdf_output
示例12: respond_with_permit_pdf
def respond_with_permit_pdf(permit):
"""
:param permit: The permit for which to generate the PDF
:return: An HTTP response
"""
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type="application/pdf")
response["Content-Disposition"] = 'attachment; filename="permit_%05d.pdf"' % permit.pk
# Produce PDF using ReportLab:
p = canvas.Canvas(response)
pageW = defaultPageSize[0]
pageH = defaultPageSize[1]
refX = pageW / 2
refY = pageH - 6.25 * inch
# The tag that gets placed near the location.
p.rect(refX - 2.0 * inch, refY - 0 * inch, 4 * inch, 5 * inch)
refY += 4.5 * inch
# Static header:
p.setFont("Helvetica", 14)
p.drawCentredString(refX, refY - 0.00 * inch, "XEROCRAFT HACKERSPACE")
p.setFont("Helvetica-Bold", 28)
p.drawCentredString(refX, refY - 0.40 * inch, "PARKING PERMIT")
p.setFont("Helvetica", 14)
p.drawCentredString(refX, refY - 0.66 * inch, "MEMBER-CLAIMED PROPERTY")
# Changing refY allows the follwoing to be moved up/down as a group, w.r.t. the text above.
refY -= 3.0 * inch
# QR Code:
qr = QrCodeWidget('{"permit":%d}' % permit.id)
qrSide = 2.5 * inch # REVIEW: This isn't actually 2.3 inches. What is it?
bounds = qr.getBounds()
qrW = bounds[2] - bounds[0]
qrH = bounds[3] - bounds[1]
drawing = Drawing(1000, 1000, transform=[qrSide / qrW, 0, 0, qrSide / qrH, 0, 0])
drawing.add(qr)
renderPDF.draw(drawing, p, refX - qrSide / 2, refY)
p.setFont("Helvetica", 10)
p.drawCentredString(refX, refY - 0.00 * inch, permit.short_desc)
u = permit.owner.auth_user
p.drawCentredString(refX, refY - 0.20 * inch, "Parked by: %s %s" % (u.first_name, u.last_name))
p.drawCentredString(refX, refY - 0.40 * inch, "Permit #%05d" % permit.id)
p.setFont("Helvetica", 14)
if permit.ok_to_move:
p.drawCentredString(refX, refY - 0.80 * inch, "It is OK to carefully move this item")
p.drawCentredString(refX, refY - 1.00 * inch, "to another location, if required.")
else:
p.drawCentredString(refX, refY - 0.80 * inch, "This item is fragile. Please attempt")
p.drawCentredString(refX, refY - 1.00 * inch, "to contact me before moving it.")
p.showPage()
p.save()
return response
示例13: draw_to_file
def draw_to_file(self, output_file, title):
"""Write the comparative plot to a file.
Arguments:
o output_file - The name of the file to output the information to,
or a handle to write to.
o title - A title to display on the graphic.
"""
width, height = self.page_size
cur_drawing = Drawing(width, height)
self._draw_title(cur_drawing, title, width, height)
start_x = inch * .5
end_x = width - inch * .5
end_y = height - 1.5 * inch
start_y = .5 * inch
self._draw_scatter_plot(cur_drawing, start_x, start_y, end_x, end_y)
if self.output_format == 'pdf':
out_canvas = canvas.Canvas(output_file, pagesize = self.page_size)
renderPDF.draw(cur_drawing, out_canvas, 0, 0)
out_canvas.showPage()
out_canvas.save()
elif self.output_format == 'eps':
renderPS.drawToFile(cur_drawing, output_file)
else:
raise ValueError("Invalid output format %s" % self.output_format)
示例14: draw_bar_chart
def draw_bar_chart(pdf_text, page_height):
'''Currently generates a dummy graph.
Next, need to pass in data that shall
be the reactors temp throughout the
sequence.
'''
pdf_text.showPage()
drawing = Drawing(400, 200)
data = [
(13, 5, 20, 22, 37, 45, 19, 4),
(14, 6, 21, 23, 38, 46, 20, 5)
]
bc = VerticalBarChart()
bc.x = 50
bc.y = 50
bc.height = 125
bc.width = 300
bc.data = data
bc.strokeColor = colors.black
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 50
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor = 'ne'
bc.categoryAxis.labels.dx = 8
bc.categoryAxis.labels.dy = -2
bc.categoryAxis.labels.angle = 30
bc.categoryAxis.categoryNames = ['Jan-99','Feb-99','Mar-99','Apr-99','May-99','Jun-99','Jul-99','Aug-99']
drawing.add(bc)
renderPDF.draw(drawing, pdf_text, inch, inch)
return page_height
示例15: draw_qr_sdaps_info
def draw_qr_sdaps_info(canvas, survey, page):
# The page number is one based here already
# The survey_id is a 32bit number, which means we need
# 10 decimal digits to encode it, then we need to encode the
# the page with at least 3 digits(just in case someone is insane enough
# to have a questionnaire with more than 99 pages.
# So use 10+4 digits
value = "%010d%04d" % (survey.survey_id, page)
y = survey.defs.paper_height - defs.corner_mark_bottom
x = survey.defs.paper_width - defs.corner_mark_right
qr_code = qr.QrCodeWidget(value, barLevel='H')
bounds = qr_code.getBounds()
width = bounds[2] - bounds[0]
height = bounds[3] - bounds[1]
# Squeeze into the space between corner mark and content
size = defs.bottom_page_margin - defs.corner_mark_bottom
code_y = y
code_x = x - size
d = Drawing(size*mm, size*mm, transform=[float(size*mm)/width,0,0,-float(size*mm)/height,0,0])
d.add(qr_code)
renderPDF.draw(d, canvas, code_x*mm, code_y*mm)