Using Reportlab inside Zope (Python Scripts)
Created by .
Last modified on 2003/08/05.
Reportlab (www.reportlab.com) is a tool for generating dynamic PDF documents.
There is a sample using a External Method in
ReportLab distribution.
Here, you will find how to use reportlab using
python scripts inside zope.
Steps:
I - Installing ReportLab and Pithon Imaging Lybrary
---------------------------------------------------
1.Download Reportlab (http://www.reportlab.com/download.html)
-- Reportlab Toolkit
-- http://www.reportlab.com/ftp/ReportLab_1_17.zip
-- Reportlab dlls for Python 2.1 (Zope 2.6.1)
-- http://www.reportlab.com/cgi-bin/zipper.sh?win32-dlls/2.1+rl_win32_2_1.zip
2. Download Pithon Imaging Library (PIL) for python 2.1 (Zope 2.6.1)
-- http://www.pythonware.com/downloads/py21-pil-1.1.2-20010910.exe
3. Install reportlab
3.1. Under Zope_Directory/bin/DLLs
- all dll files
3.2. Under Zope_Directory/lib/python
- folder: reportlab
4. Install PIL (note case)
4.1. Under Zope_Directory/bin/DLLs
files: _imaging.pyd and _imagingtk.pyd
4.2. Under Zope_Directory/lib/python
folder: PIL
7. Create a folder under Zope_Directory/lib/python/Products named "GlobalModules"
7.1. Create a file __init__.py
7.2. For each module and class that you need,
you must add "allow_modules" and "allow_classes",
as you see below:
File __init__.py
###############################################
from AccessControl import allow_module, allow_class, allow_type
from AccessControl import ModuleSecurityInfo, ClassSecurityInfo
from Globals import InitializeClass
# Python
allow_module('StringIO')
from StringIO import StringIO
allow_class(StringIO)
# PIL modules
allow_module('PIL.Image')
from PIL import Image as PIL_Image
allow_class(PIL_Image)
# ReportLab modules
allow_module('reportlab.rl_config')
allow_module('reportlab.graphics.renderbase')
allow_module('reportlab.graphics.renderPDF')
allow_module('reportlab.graphics.renderPM')
allow_module('reportlab.graphics.renderPS')
allow_module('reportlab.graphics.renderSVG')
allow_module('reportlab.graphics.shapes')
allow_module('reportlab.graphics.widgetbase')
allow_module('reportlab.graphics.charts.areas')
allow_module('reportlab.graphics.charts.axes')
allow_module('reportlab.graphics.charts.barcharts')
allow_module('reportlab.graphics.charts.dotbox')
allow_module('reportlab.graphics.charts.legends')
allow_module('reportlab.graphics.charts.linecharts')
allow_module('reportlab.graphics.charts.lineplots')
allow_module('reportlab.graphics.charts.markers')
allow_module('reportlab.graphics.charts.piecharts')
allow_module('reportlab.graphics.charts.slidebox')
allow_module('reportlab.graphics.charts.spider')
allow_module('reportlab.graphics.charts.textlabels')
allow_module('reportlab.graphics.charts.utils')
allow_module('reportlab.graphics.widgets.flags')
allow_module('reportlab.graphics.widgets.grids')
allow_module('reportlab.graphics.widgets.markers')
allow_module('reportlab.graphics.widgets.signsandsymbols')
allow_module('reportlab.lib.abag')
allow_module('reportlab.lib.attrmap')
allow_module('reportlab.lib.codecharts')
allow_module('reportlab.lib.colors')
allow_module('reportlab.lib.corp')
allow_module('reportlab.lib.enums')
allow_module('reportlab.lib.fonts')
allow_module('reportlab.lib.formatters')
allow_module('reportlab.lib.logger')
allow_module('reportlab.lib.normalDate')
allow_module('reportlab.lib.pagesizes')
allow_module('reportlab.lib.PyFontify')
allow_module('reportlab.lib.randomtext')
allow_module('reportlab.lib.rparsexml')
allow_module('reportlab.lib.sequencer')
allow_module('reportlab.lib.setup')
allow_module('reportlab.lib.styles')
from reportlab.lib.styles import PropertySet, ParagraphStyle, LineStyle, StyleSheet1
allow_class(PropertySet)
allow_class(ParagraphStyle)
allow_class(LineStyle)
allow_class(StyleSheet1)
allow_module('reportlab.lib.tocindex')
allow_module('reportlab.lib.units')
allow_module('reportlab.lib.utils')
allow_module('reportlab.lib.validators')
allow_module('reportlab.lib.xmllib')
allow_module('reportlab.lib.yaml')
allow_module('reportlab.platypus')
from reportlab.platypus import \
BaseDocTemplate, SimpleDocTemplate, \
Flowable, PageBreak, Preformatted, Spacer, XBox, \
Paragraph, \
Table, TableStyle, CellStyle, \
Frame
allow_class(BaseDocTemplate)
allow_class(SimpleDocTemplate)
allow_class(Flowable)
allow_class(PageBreak)
allow_class(Preformatted)
allow_class(Spacer)
allow_class(XBox)
allow_class(Paragraph)
allow_class(Table)
allow_class(TableStyle)
allow_class(CellStyle)
allow_class(Frame)
allow_module('reportlab.pdfbase.cidfonts')
allow_module('reportlab.pdfbase.pdfdoc')
allow_module('reportlab.pdfbase.pdfform')
allow_module('reportlab.pdfbase.pdfmetrics')
allow_module('reportlab.pdfbase.pdfpattern')
allow_module('reportlab.pdfbase.pdfutils')
allow_module('reportlab.pdfbase.ttfonts')
allow_module('reportlab.pdfbase._cidfontdata')
allow_module('reportlab.pdfbase._fontdata')
allow_module('reportlab.pdfgen.canvas')
from reportlab.pdfgen.canvas import Canvas
allow_class(Canvas)
allow_module('reportlab.pdfgen.pathobject')
allow_module('reportlab.pdfgen.pdfgeom')
allow_module('reportlab.pdfgen.pdfimages')
allow_module('reportlab.pdfgen.pycanvas')
allow_module('reportlab.pdfgen.textobject')
from reportlab.pdfgen.textobject import PDFTextObject
allow_class(PDFTextObject)
allow_module('reportlab.platypus.doctemplate')
allow_module('reportlab.platypus.figures')
allow_module('reportlab.platypus.flowables')
allow_module('reportlab.platypus.frames')
allow_module('reportlab.platypus.para')
allow_module('reportlab.platypus.paragraph')
allow_module('reportlab.platypus.paraparser')
allow_module('reportlab.platypus.tableofcontents')
allow_module('reportlab.platypus.tables')
allow_module('reportlab.platypus.xpreformatted')
################################################
|