diff options
Diffstat (limited to 'bin/reportlab/tools/docco/rltemplate.py')
| -rw-r--r-- | bin/reportlab/tools/docco/rltemplate.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/bin/reportlab/tools/docco/rltemplate.py b/bin/reportlab/tools/docco/rltemplate.py new file mode 100644 index 00000000000..2d71c26d6ba --- /dev/null +++ b/bin/reportlab/tools/docco/rltemplate.py @@ -0,0 +1,140 @@ +#Copyright ReportLab Europe Ltd. 2000-2004 +#see license.txt for license details +#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/tools/docco/rltemplate.py +# doc template for RL manuals. Currently YAML is hard-coded +#to use this, which is wrong. + + +from reportlab.platypus import PageTemplate, \ + BaseDocTemplate, Frame, Paragraph +from reportlab.lib.units import inch, cm +from reportlab.rl_config import defaultPageSize + + +class FrontCoverTemplate(PageTemplate): + def __init__(self, id, pageSize=defaultPageSize): + self.pageWidth = pageSize[0] + self.pageHeight = pageSize[1] + frame1 = Frame(inch, + 3*inch, + self.pageWidth - 2*inch, + self.pageHeight - 518, id='cover') + PageTemplate.__init__(self, id, [frame1]) # note lack of onPage + + def afterDrawPage(self, canvas, doc): + canvas.saveState() + canvas.drawImage('../images/replogo.gif',2*inch, 8*inch) + + + canvas.setFont('Times-Roman', 10) + canvas.line(inch, 120, self.pageWidth - inch, 120) + + canvas.drawString(inch, 100, 'Lombard Business Park') + canvas.drawString(inch, 88, '8 Lombard Road') + canvas.drawString(inch, 76, 'Wimbledon') + canvas.drawString(inch, 64, 'London, ENGLAND SW19 3TZ') + + canvas.drawRightString(self.pageWidth - inch, 100, '103 Bayard Street') + canvas.drawRightString(self.pageWidth - inch, 88, 'New Brunswick') + canvas.drawRightString(self.pageWidth - inch, 76, 'New Jersey, 08904)') + canvas.drawRightString(self.pageWidth - inch, 64, 'USA') + + canvas.restoreState() + + +class OneColumnTemplate(PageTemplate): + def __init__(self, id, pageSize=defaultPageSize): + self.pageWidth = pageSize[0] + self.pageHeight = pageSize[1] + frame1 = Frame(inch, + inch, + self.pageWidth - 2*inch, + self.pageHeight - 2*inch, + id='normal') + PageTemplate.__init__(self, id, [frame1]) # note lack of onPage + + def afterDrawPage(self, canvas, doc): + y = self.pageHeight - 50 + canvas.saveState() + canvas.setFont('Times-Roman', 10) + canvas.drawString(inch, y+8, doc.title) + canvas.drawRightString(self.pageWidth - inch, y+8, doc.chapter) + canvas.line(inch, y, self.pageWidth - inch, y) + canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) + canvas.restoreState() + +class TwoColumnTemplate(PageTemplate): + def __init__(self, id, pageSize=defaultPageSize): + self.pageWidth = pageSize[0] + self.pageHeight = pageSize[1] + colWidth = 0.5 * (self.pageWidth - 2.25*inch) + frame1 = Frame(inch, + inch, + colWidth, + self.pageHeight - 2*inch, + id='leftCol') + frame2 = Frame(0.5 * self.pageWidth + 0.125, + inch, + colWidth, + self.pageHeight - 2*inch, + id='rightCol') + PageTemplate.__init__(self, id, [frame1, frame2]) # note lack of onPage + + def afterDrawPage(self, canvas, doc): + y = self.pageHeight - 50 + canvas.saveState() + canvas.setFont('Times-Roman', 10) + canvas.drawString(inch, y+8, doc.title) + canvas.drawRightString(self.pageWidth - inch, y+8, doc.chapter) + canvas.line(inch, y, self.pageWidth - inch, y*inch) + canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) + canvas.restoreState() + + +class RLDocTemplate(BaseDocTemplate): + def afterInit(self): + self.addPageTemplates(FrontCoverTemplate('Cover', self.pagesize)) + self.addPageTemplates(OneColumnTemplate('Normal', self.pagesize)) + self.addPageTemplates(TwoColumnTemplate('TwoColumn', self.pagesize)) + + #just playing + self.title = "(Document Title Goes Here)" + self.chapter = "(No chapter yet)" + self.chapterNo = 1 #unique keys + self.sectionNo = 1 # unique keys + +## # AR hack +## self.counter = 1 + def beforeDocument(self): + self.canv.showOutline() + + def afterFlowable(self, flowable): + """Detect Level 1 and 2 headings, build outline, + and track chapter title.""" + if isinstance(flowable, Paragraph): + style = flowable.style.name + +## #AR debug text +## try: +## print '%d: %s...' % (self.counter, flowable.getPlainText()[0:40]) +## except AttributeError: +## print '%d: (something with ABag)' % self.counter +## self.counter = self.counter + 1 + + if style == 'Title': + self.title = flowable.getPlainText() + elif style == 'Heading1': + self.chapter = flowable.getPlainText() + key = 'ch%d' % self.chapterNo + self.canv.bookmarkPage(key) + self.canv.addOutlineEntry(flowable.getPlainText(), + key, 0, 0) + self.chapterNo = self.chapterNo + 1 + self.sectionNo = 1 + elif style == 'Heading2': + self.section = flowable.text + key = 'ch%ds%d' % (self.chapterNo, self.sectionNo) + self.canv.bookmarkPage(key) + self.canv.addOutlineEntry(flowable.getPlainText(), + key, 1, 0) + self.sectionNo = self.sectionNo + 1
\ No newline at end of file |
