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