author | rgbecker |
Wed, 25 Oct 2000 08:57:46 +0000 | |
changeset 494 | 54257447cfe9 |
parent 355 | 3a8dd5f93921 |
child 498 | 7e689d773a49 |
permissions | -rw-r--r-- |
494 | 1 |
#copyright ReportLab Inc. 2000 |
2 |
#see license.txt for license details |
|
3 |
#history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/docs/tools/rltemplate.py?cvsroot=reportlab |
|
4 |
#$Header: /tmp/reportlab/docs/tools/rltemplate.py,v 1.7 2000/10/25 08:57:45 rgbecker Exp $ |
|
278 | 5 |
# doc template for RL manuals. Currently YAML is hard-coded |
6 |
#to use this, which is wrong. |
|
7 |
||
8 |
||
9 |
from reportlab.platypus import PageTemplate, \ |
|
295
1f00bd112cb0
remove UserDocTemplate, but add Andy's hook methods
rgbecker
parents:
285
diff
changeset
|
10 |
BaseDocTemplate, Frame, Paragraph |
278 | 11 |
from reportlab.lib.units import inch, cm |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
12 |
from reportlab.lib.pagesizes import DEFAULT_PAGE_SIZE |
278 | 13 |
|
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
14 |
|
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
15 |
class FrontCoverTemplate(PageTemplate): |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
16 |
def __init__(self, id, pageSize=DEFAULT_PAGE_SIZE): |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
17 |
self.pageWidth = pageSize[0] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
18 |
self.pageHeight = pageSize[1] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
19 |
frame1 = Frame(inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
20 |
3*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
21 |
self.pageWidth - 2*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
22 |
4.5*inch, id='cover') |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
23 |
PageTemplate.__init__(self, id, [frame1]) # note lack of onPage |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
24 |
|
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
25 |
def afterDrawPage(self, canvas, doc): |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
26 |
canvas.saveState() |
345
d300076e7d68
Script was referring to the wrong copy of the logo.
andy_robinson
parents:
344
diff
changeset
|
27 |
canvas.drawInlineImage('../images/replogo.gif',2*inch, 8*inch) |
278 | 28 |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
29 |
|
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
30 |
canvas.setFont('Times-Roman', 10) |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
31 |
canvas.line(inch, 120, self.pageWidth - 2*inch, 120) |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
32 |
|
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
33 |
canvas.drawString(inch, 100, 'Lombard Business Park') |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
34 |
canvas.drawString(inch, 88, '8 Lombard Road') |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
35 |
canvas.drawString(inch, 76, 'Wimbledon') |
355 | 36 |
canvas.drawString(inch, 64, 'London, ENGLAND SW19 3TZ') |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
37 |
|
355 | 38 |
canvas.drawRightString(self.pageWidth - inch, 100, '103 Bayard Street') |
39 |
canvas.drawRightString(self.pageWidth - inch, 88, 'New Brunswick') |
|
40 |
canvas.drawRightString(self.pageWidth - inch, 76, 'New Jersey, 08904)') |
|
41 |
canvas.drawRightString(self.pageWidth - inch, 64, 'USA') |
|
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
42 |
|
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
43 |
canvas.restoreState() |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
44 |
|
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
45 |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
46 |
class OneColumnTemplate(PageTemplate): |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
47 |
def __init__(self, id, pageSize=DEFAULT_PAGE_SIZE): |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
48 |
self.pageWidth = pageSize[0] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
49 |
self.pageHeight = pageSize[1] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
50 |
frame1 = Frame(inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
51 |
inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
52 |
self.pageWidth - 2*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
53 |
self.pageHeight - 2*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
54 |
id='normal') |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
55 |
PageTemplate.__init__(self, id, [frame1]) # note lack of onPage |
278 | 56 |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
57 |
def afterDrawPage(self, canvas, doc): |
278 | 58 |
canvas.saveState() |
59 |
canvas.setFont('Times-Roman', 10) |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
60 |
canvas.drawString(inch, 11.1*inch, doc.title) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
61 |
canvas.drawRightString(7*inch, 11.1*inch, doc.chapter) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
62 |
canvas.line(inch, 11*inch, 7*inch, 11*inch) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
63 |
canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
64 |
canvas.restoreState() |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
65 |
|
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
66 |
class TwoColumnTemplate(PageTemplate): |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
67 |
def __init__(self, id, pageSize=DEFAULT_PAGE_SIZE): |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
68 |
self.pageWidth = pageSize[0] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
69 |
self.pageHeight = pageSize[1] |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
70 |
colWidth = 0.5 * (self.pageWidth - 2.25*inch) |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
71 |
frame1 = Frame(inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
72 |
inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
73 |
colWidth, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
74 |
self.pageHeight - 2*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
75 |
id='leftCol') |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
76 |
frame2 = Frame(0.5 * self.pageWidth + 0.125, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
77 |
inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
78 |
colWidth, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
79 |
self.pageHeight - 2*inch, |
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
80 |
id='rightCol') |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
81 |
PageTemplate.__init__(self, id, [frame1, frame2]) # note lack of onPage |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
82 |
|
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
83 |
def afterDrawPage(self, canvas, doc): |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
84 |
canvas.saveState() |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
85 |
canvas.setFont('Times-Roman', 10) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
86 |
canvas.drawString(inch, 11.1*inch, doc.title) |
278 | 87 |
canvas.drawRightString(7*inch, 11.1*inch, doc.chapter) |
88 |
canvas.line(inch, 11*inch, 7*inch, 11*inch) |
|
89 |
canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) |
|
90 |
canvas.restoreState() |
|
91 |
||
92 |
||
295
1f00bd112cb0
remove UserDocTemplate, but add Andy's hook methods
rgbecker
parents:
285
diff
changeset
|
93 |
class RLDocTemplate(BaseDocTemplate): |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
94 |
def afterInit(self): |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
95 |
self.addPageTemplates(FrontCoverTemplate('Cover')) |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
96 |
self.addPageTemplates(OneColumnTemplate('Normal')) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
97 |
self.addPageTemplates(TwoColumnTemplate('TwoColumn')) |
344
dd6e41c2b0ed
Paragraphs chapter pretty much complete. Fancy cover.
andy_robinson
parents:
295
diff
changeset
|
98 |
|
278 | 99 |
#just playing |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
100 |
self.title = "(Document Title Goes Here)" |
278 | 101 |
self.chapter = "(No chapter yet)" |
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
102 |
self.chapterNo = 1 #unique keys |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
103 |
self.sectionNo = 1 # uniqque keys |
295
1f00bd112cb0
remove UserDocTemplate, but add Andy's hook methods
rgbecker
parents:
285
diff
changeset
|
104 |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
105 |
def beforeDocument(self): |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
106 |
self.canv.showOutline() |
295
1f00bd112cb0
remove UserDocTemplate, but add Andy's hook methods
rgbecker
parents:
285
diff
changeset
|
107 |
|
285
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
108 |
def afterFlowable(self, flowable): |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
109 |
"""Detect Level 1 and 2 headings, build outline, |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
110 |
and track chapter title.""" |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
111 |
if isinstance(flowable, Paragraph): |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
112 |
style = flowable.style.name |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
113 |
if style == 'Title': |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
114 |
self.title = flowable.getPlainText() |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
115 |
elif style == 'Heading1': |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
116 |
self.chapter = flowable.getPlainText() |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
117 |
key = 'ch%d' % self.chapterNo |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
118 |
self.canv.bookmarkPage(key) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
119 |
self.canv.addOutlineEntry(flowable.getPlainText(), |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
120 |
key, 0, 0) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
121 |
self.chapterNo = self.chapterNo + 1 |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
122 |
self.sectionNo = 1 |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
123 |
elif style == 'Heading2': |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
124 |
self.section = flowable.text |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
125 |
key = 'ch%ds%d' % (self.chapterNo, self.sectionNo) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
126 |
self.canv.bookmarkPage(key) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
127 |
self.canv.addOutlineEntry(flowable.getPlainText(), |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
128 |
key, 1, 0) |
61c0dc3c7fc0
rltemplate now simple, based on UserDocTemplate
andy_robinson
parents:
278
diff
changeset
|
129 |
self.sectionNo = self.sectionNo + 1 |