docs/userguide/ch1_intro.py
author rgbecker
Wed, 25 Oct 2000 08:57:46 +0000
changeset 494 54257447cfe9
parent 444 f939b29eca9a
child 685 582823622e2e
permissions -rw-r--r--
Changed to indirect copyright
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
494
54257447cfe9 Changed to indirect copyright
rgbecker
parents: 444
diff changeset
     1
#copyright ReportLab Inc. 2000
54257447cfe9 Changed to indirect copyright
rgbecker
parents: 444
diff changeset
     2
#see license.txt for license details
54257447cfe9 Changed to indirect copyright
rgbecker
parents: 444
diff changeset
     3
#history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/docs/userguide/ch1_intro.py?cvsroot=reportlab
54257447cfe9 Changed to indirect copyright
rgbecker
parents: 444
diff changeset
     4
#$Header: /tmp/reportlab/docs/userguide/ch1_intro.py,v 1.11 2000/10/25 08:57:45 rgbecker Exp $
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
     5
from genuserguide import *
344
dd6e41c2b0ed Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents: 340
diff changeset
     6
import reportlab
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
     7
344
dd6e41c2b0ed Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents: 340
diff changeset
     8
title("User Guide")
dd6e41c2b0ed Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents: 340
diff changeset
     9
centred('ReportLab Version ' + reportlab.Version)
dd6e41c2b0ed Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents: 340
diff changeset
    10
dd6e41c2b0ed Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents: 340
diff changeset
    11
nextTemplate("Normal")
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    12
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    13
########################################################################
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    14
#
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    15
#               Chapter 1
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    16
#
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    17
########################################################################
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    18
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    19
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    20
heading1("Introduction")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    21
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    22
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    23
heading2("About this document")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    24
disc("""This document is intended to be a conversational introduction
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    25
to the use of the ReportLab packages.  Some previous programming experience
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    26
is presumed and familiarity with the Python Programming language is
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    27
recommended.  If you are new to Python, we tell you in the next section
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    28
where to go for orientation.
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    29
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    30
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    31
disc("""After working your way throught this, you should be ready to begin
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    32
writing programs to produce sophisticated reports.
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    33
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    34
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    35
disc("""In this chapter, we will cover the groundwork:""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    36
bullet("What is ReportLab all about, and why should I use it?")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    37
bullet("What is Python?")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    38
bullet("How do I get everything set up and running?")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    39
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    40
todo("""
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    41
Be warned! This document is in a <em>very</em> preliminary form.  We need
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    42
your help to make sure it is complete and helpful.  Please send any
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    43
feedback to our user mailing list, reportlab-users@egroups.com.
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    44
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    45
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    46
heading2("What is ReportLab?")
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    47
disc("""ReportLab is a software library that lets you directly
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    48
create documents in Adobe's Portabe Document Format (PDF) using
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    49
the Python programming language. """)
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    50
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    51
disc("""PDF is the global standard for electronic documents. It
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    52
supports high-quality printing yet is totally portable across
406
0444ca32fb1b Bruce Eckel spotted these typos.
rgbecker
parents: 397
diff changeset
    53
platforms, thanks to the freely available Acrobat Reader.  Any
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    54
application which previously generated hard copy reports can
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    55
benefit from making PDF documents instead; these can be archived,
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    56
emailed, placed on the web, or printed out the old-fashioned way.
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    57
However, the PDF file format is a complex
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    58
indexed binary format which is impossible to type directly.
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    59
The PDF format specification is more than 600 pages long and
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    60
PDF files must provide precise byte offsets -- a single extra
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    61
character placed anywhere in a valid PDF document can render it
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    62
invalid.
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    63
Until now, most of the world's PDF documents have been produced
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
    64
by Adobe's Acrobat tools, which act as a 'print driver'.
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    65
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
    66
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    67
disc("""The ReportLab library directly creates PDF based on
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    68
your graphics commands.  There are no intervening steps.  Your applications
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    69
can generate reports extremely fast - sometimes orders
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    70
of magnitude faster than traditional report-writing
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    71
tools.""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    72
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    73
disc("""
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    74
By contrast, many other methods for generating PDF documents
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    75
involve "pipelines" of several processes, which make the generation process
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    76
slow, and very difficult to manage and maintain.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    77
""")
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
    78
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    79
disc("""In addition, because you are writing a program
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    80
in a powerful general purpose language, there are no
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    81
restrictions at all on where you get your data from,
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    82
how you transform it, and the the kind of output
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    83
you can create.  And you can reuse code across
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    84
whole families of reports.""")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
    85
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    86
disc("""The ReportLab library is expected to be useful
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    87
in at least the following contexts:""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    88
bullet("Dynamic PDF generation on the web")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    89
bullet("High-volume corporate reporting and database publishing")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    90
bullet("""An embeddable print engine for other applications, including
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    91
a 'report language' so that users can customize their own reports. <i>
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    92
This is particularly relevant to cross-platform apps which cannot
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    93
rely on a consistent printing or previewing API on each operating
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    94
system</i>.""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    95
bullet("""A 'build system' for complex documents with charts, tables
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    96
and text such as management accounts, statistical reports and
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    97
scientific papers """)
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
    98
bullet("""Going from XML to PDF in one step!""")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
    99
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   100
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   101
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   102
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   103
heading2("What is Python?")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   104
disc("""<para lindent=+36>
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   105
<b>python</b>, (<i>Gr. Myth.</i> An enormous serpent that lurked in the cave of Mount Parnassus and was slain
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   106
by Apollo) <b>1.</b> any of a genus of large, non-poisonous snakes of Asia, Africa and Australia that
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   107
suffocate their prey to death. <b>2.</b> popularly, any large snake that crushes its prey. <b>3.</b> totally awesome,
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   108
bitchin' very high level programming language (which in <i>our</i> exceedingly humble opinions
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   109
(for what they are worth)
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   110
whallops the snot out of all the other contenders (but your
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   111
mileage may vary real soon now, as far as we know).</para>
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   112
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   113
disc("""
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   114
Python is an <i>interpreted, interactive, object-oriented</i> programming language. It is often compared to Tcl, Perl,
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   115
Scheme or Java. 
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   116
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   117
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   118
disc("""
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   119
Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   120
dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   121
various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++.
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   122
Python is also usable as an extension language for applications that need a programmable interface. 
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   123
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   124
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   125
disc("""
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   126
The Python implementation is portable: it runs on most brands of UNIX
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   127
(including clones such as Linux), on Windows, DOS, OS/2, Mac, Amiga, DEC/VMS,
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   128
IBM operating systems, VxWorks, PSOS, ... If
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   129
your favorite system isn't listed here, it may still be supported, if there's a C
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   130
programming language compiler for it. Ask around on
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   131
comp.lang.python -- or just try compiling Python yourself. 
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   132
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   133
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   134
disc("""
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   135
Python is copyrighted but <b>freely usable and distributable, even for commercial use</b>. 
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   136
The ReportLab core modules share the same copyright with the name of the copyright holder
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   137
modified.  Both packages use the "Berkeley Standard Distribution (BSD) style" free software copyright.
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   138
""")
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   139
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   140
heading2("Installation and Setup")
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   141
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   142
disc("""
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   143
Below we provide an abbreviated setup procedure for Python experts and a more
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   144
verbose procedure for people who are new to Python.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   145
""")
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   146
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   147
heading3("Installation for experts")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   148
disc("""First of all, we'll give you the high-speed version for experienced
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   149
Python developers:""")
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   150
list("Install Python 1.5.1 or later")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   151
list("""If you want to produce compressed PDF files (recommended),
406
0444ca32fb1b Bruce Eckel spotted these typos.
rgbecker
parents: 397
diff changeset
   152
check that zlib is installed.""")
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   153
list("""If you want to work with bitmap images, install and
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   154
test the Python Imaging Library""")
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   155
list("""Unpack the reportlab package (reportlab.zip
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   156
or reportlab.tgz) into a directory on your path""")
406
0444ca32fb1b Bruce Eckel spotted these typos.
rgbecker
parents: 397
diff changeset
   157
list("""$cd$ to ^reportlab/pdfgen/test^ and execute $testpdfgen.py$,
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   158
which will create a file 'testpdfgen.pdf'.""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   159
disc(" ")
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   160
disc("""If you have any problems, check the 'Detailed Instructions' section below.""")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   161
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   162
heading3("A note on available versions")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   163
disc("""The $reportlab$
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   164
library can be found at $ftp.reportlab.com$ in the top-level directory.
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   165
Each successive version is stored in both zip and tgz format, but the
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   166
contents are identical.  Versions are numbered:  $ReportLab_0_85.zip$,
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   167
$ReportLab_0_86.zip$ and so on.  The latest stable version is also
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   168
available as just $reportlab.zip$ (or $reportlab.tgz$), which
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   169
is actually a symbolic link to the latest numbered version.""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   170
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   171
disc("""We also make nightly snapshots of our CVS 
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   172
(version control) tree available.  In
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   173
general, these are very stable because we have a comprehensive test
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   174
suite that all developers can run at any time.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   175
New modules and functions within the overall package may be in a state
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   176
of flux, but stable features can be assumed to be stable.  If a bug is
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   177
reported and fixed, we assume people who need the fix in a hurry will
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   178
get $current.zip$""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   179
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   180
heading3("Instructions for novices: Windows")
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   181
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   182
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   183
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   184
disc("""This section assumes you
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   185
don't know much about Python.  We cover all of the steps for three
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   186
common platforms, including how to verify that each one is complete.
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   187
While this may seem like a long list, everything takes 5 minutes if
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   188
you have the binaries at hand.""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   189
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   190
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   191
restartList()
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   192
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   193
list("""Get and install Python from $http://www.python.org/.$
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   194
Follow the links to 'Download' and get the latest official
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   195
version.  Currently this is Python 1.5.2 in the file $py152.exe$.
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   196
It will prompt you for a directory location, which by default is
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   197
$C:\Program Files\Python$. This works, but we recommend entering
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   198
$C:\Python15$.  Python 1.6 will be out shortly and will adopt
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   199
$C:\Python16$ as its default; and quite often one wants to change directory into the
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   200
Python directory from a command prompt, so a path without spaces saves
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   201
a lot of typing!  After installing, you should be able to run the
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   202
'Python (command line)' option from the Start Menu.""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   203
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   204
list("""If on Win9x, we recommend either copying python.exe to a
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   205
location on your path, or adding your Python directory to the path, so
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   206
that you can execute Python from any directory.""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   207
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   208
list("""If you want a nice editing environment or might need to
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   209
access Microsoft applications, get the Pythonwin add-on package from
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   210
the same page.  Once this is installed, you can start Pythonwin from
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   211
the Start Menu and get a GUI application.""")
337
76141601ec1f Broke out chapter 1
andy_robinson
parents:
diff changeset
   212
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   213
disc("""The next step is optional and only necessary if you want to
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   214
include images in your reports; it can also be carried out later.""")
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   215
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   216
list("Install the Python Imaging Library ($PIL$).  (todo:  make up a bundle that works)")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   217
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   218
list("Add the $DLL$s in $PIL$ to your $Python\DLLs$ directory")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   219
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   220
list("""To verify,
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   221
start the Python interpreter (command line) and type $import Image$, followed by
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   222
$import _imaging$.  If you see no error messages, all is well.""")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   223
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   224
disc("""Now you are ready to install reportlab itself.""")
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   225
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   226
list("""Unzip the archive straight into
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   227
your Python directory; it creates a subdirectory named
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   228
$reportlab$.  You should now be able to go to a Python
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   229
command line interpreter and type $import reportlab$ without getting
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   230
an error message.""")
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   231
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   232
list("""Open up a $MS-DOS$ command prompt and CD to
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   233
"..\\reportlab\\pdfgen\\test".  On NT, enter "testpdfgen.py"; on
340
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   234
Win9x, enter "python testpdfgen.py".  After a couple of seconds,
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   235
the script completes and the file testpdfgen.pdf should be ready for
f3f2af39e7d7 More work on chapter 1
andy_robinson
parents: 337
diff changeset
   236
viewing.  If PIL is installed, there should be a "Python Powered"
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   237
image on the last page.  You're done!""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   238
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   239
disc("""
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   240
[Note: the "couple of seconds" delay is mainly due to
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   241
compilation of the python scripts in the ReportLab package.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   242
The next time the ReportLab modules are used the execution
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   243
will be noticably faster because the $pyc$ compiled python
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   244
files will be used in place of the $py$ python source files.]""")
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   245
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   246
heading3("Instructions for Python novices: Unix")
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   247
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   248
restartList()
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   249
list("""First you need to decide if you want to install the Python sources
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   250
and compile these yourself or if you only want to install a binary package
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   251
for one of the many variants of Linux or Unix. If you want to compile from
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   252
source download the latest
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   253
sources from http://www.python.org (currently the latest source is
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   254
in http://www.python.org/ftp/python/src/py152.tgz). If you wish to use
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   255
binaries
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   256
get the latest RPM or DEB or whatever package and install (or get your
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   257
super user (system administrator) to do the work).""")
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   258
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   259
list("""If you are building Python yourself, unpack the sources into a temporary directory using a tar command
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   260
e.g. $tar xzvf py152.tgz$; this will create a subdirectory called Python-1.5.2
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   261
(or whatever) cd into this directory. Then read the file $README$! It contains the 
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   262
latest information on how to install Python.""")
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   263
385
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   264
list("""If your system has the gzip libz library installed
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   265
check that the zlib extension will be installed by default by editing
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   266
the file Modules/Setup.in and ensuring that (near line 405) the line
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   267
containing zlib zlibmodule.c is uncommented i.e. has no hash '#' character at the
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   268
beginning. You also need to decide if you will be installing in the default location
385
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   269
(/usr/local/) or in some other place.
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   270
The zlib module is needed if you want compressed PDF and for some images.""")
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   271
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   272
list("""Invoke the command $./configure --prefix=/usr/local$ this should configure
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   273
the source directory for building. Then you can build the binaries with
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   274
a $make$ command. If your $make$ command is not up to it try building
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   275
with $make MAKE=make$. If all goes well install with $make install$.""")
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   276
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   277
list("""If all has gone well and python is in the execution search path
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   278
you should now be able to type $python$ and see a <b>Python</b> prompt.
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   279
Once you can do that it's time to try and install ReportLab.
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   280
First get the latest reportlab.tgz.
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   281
If ReportLab is to be available to all then the reportlab archive should be unpacked in
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   282
the lib/site-python directory (typically /usr/local/lib/site-python) if neccessary by
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   283
a superuser.
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   284
Otherwise unpack in a directory of your choice and arrange for that directory to be on your
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   285
$PYTHONPATH$ variable.
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   286
""")
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   287
eg("""
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   288
#put something like this in your
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   289
#shell rcfile
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   290
PYTHONPATH=$HOME/mypythonpackages
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   291
export PYTHONPATH
385
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   292
""",after=0.1)
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   293
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   294
list("""You should now be able to run python and execute the python statement
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   295
""",doBullet=0)
039aad2e25cb Minor fixes to intro
rgbecker
parents: 352
diff changeset
   296
eg("""import reportlab""",after=0.1)
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   297
list("""If you want to use images you should certainly consider
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   298
getting &amp; installing the Python Imaging Library from
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   299
<font color=blue>http://www.pythonware.com/products/pil</font>.
348
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   300
""")
218d4b40a55d Unix novices info added
rgbecker
parents: 346
diff changeset
   301
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   302
heading3("Instructions for Python novices: Mac")
444
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   303
#this stuff was provided by humbert@ls12.cs.uni-dortmund.de
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   304
disc("""
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   305
First install Python,
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   306
the latest stable release is 1.52, but it is also possible to run Reportlab with 1.6a2
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   307
and probably with 1.6b1/b2.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   308
You get the software (ready to run) at font color=blue>http://www.python.org</font>
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   309
When this is successful done you should have the following folder structure.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   310
""")
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   311
image('Python_1.6a2.gif', 3*inch, 3*inch )
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   312
disc("""
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   313
Now you can put Extensions in the Extensions-Folder;
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   314
which is where you should unpack the <b>reportlab.zip</b> with your favorite unpack-utility.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   315
Youšll get a subfolder named <b>reportlab</b>.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   316
""")
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   317
444
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   318
disc("""
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   319
After this step, you have to tell the PythonInterpreter, where to look for extensions.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   320
Start EditPythonPrefs (by double-clicking the icon).
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   321
""")
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   322
image('Python_1.6a2_HINT.gif',3*inch,3*inch)
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   323
disc("""
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   324
You should get the following modal dialog.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   325
This is the point, where your special data goes in.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   326
Reportlab is on the path in Extensions. So all you have to do is add
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   327
the last line 
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   328
<b>$(PYTHON):Extensions</b>. 
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   329
""")
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   330
image('Edit_Prefs.gif',3*inch,3*inch)
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   331
disc("""
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   332
Now you should test one or more of the demo scripts include with with the sources; eg
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   333
<b>reportlab:demos:pythonpoint:pythonpoint.py</b>.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   334
One Problem on the Mac is solved gracefully in Python:
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   335
if you want a script that takes some arguments, hold down the alt or option-key,
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   336
while activating Python.
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   337
""")
f939b29eca9a Added Mac Intro
rgbecker
parents: 406
diff changeset
   338
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   339
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   340
heading2("Getting Involved")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   341
disc("""ReportLab is an Open Source project.  Although we are
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   342
a commercial company we provide the core PDF generation
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   343
sources freely, even for commercial purposes, and we make no income directly
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   344
from these modules.  We also welcome help from the community
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   345
as much as any other Open Source project.  There are many
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   346
ways in which you can help:""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   347
397
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   348
bullet("""General feedback on the core API. Does it work for you?
d2e12adb2496 fixed typos.
dinu_gherman
parents: 385
diff changeset
   349
Are there any rough edges?  Does anything feel clunky and awkward?""")
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   350
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   351
bullet("""New objects to put in reports, or useful utilities for the library.
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   352
We have an open standard for report objects, so if you have written a nice
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   353
chart or table class, why not contribute it?""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   354
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   355
bullet("""Demonstrations and Case Studies: If you have produced some nice
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   356
output, send it to us (with or without scripts).  If ReportLab solved a
352
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   357
problem for you at work, write a little 'case study' and send it in.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   358
And if your web site uses our tools to make reports, let us link to it.
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   359
We will be happy to display your work (and credit it with your name
088c93328100 random modificatoins and expansions
aaron_watters
parents: 348
diff changeset
   360
and company) on our site!""")
346
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   361
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   362
bullet("""Working on the core code:  we have a long list of things
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   363
to refine or to implement.  If you are missing some features or
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   364
just want to help out, let us know!""")
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   365
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   366
disc("""The first step for anyone wanting to learn more or
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   367
get involved is to join the mailing list.  Just send an email
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   368
with the subject "Subscribe" to
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   369
$reportlab-users-subscribe@egroups.com$.  You can also browse
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   370
through the group's archives and contributions at
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   371
$http://www.egroups.com/group/reportlab-users$.  This list is
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   372
the place to report bugs and get support. """)
179378979ab7 Introduction is 'coherent' - if not exactly finished:-)
andy_robinson
parents: 344
diff changeset
   373