def testChain(self): "Test auto resetting of subsections" seq = Sequencer() seq.chain('h1', 'h2') #creates them and links self.assertEquals(seq.next('h1'), 1) self.assertEquals(seq.next('h1'), 2) self.assertEquals(seq.next('h2'), 1) self.assertEquals(seq.next('h2'), 2) self.assertEquals(seq.next('h2'), 3) #start chapter 3 self.assertEquals(seq.next('h1'), 3) #...and the first section should be numbered 1, not 4 self.assertEquals(seq.next('h2'), 1)
class RptDocument(RptSuperclass, BaseDocTemplate): """document class for ict-ok.org reporting """ def __init__(self, filename="/tmp/rpt001.pdf", **kw): """ constructor of the object """ RptSuperclass.__init__(self) self._element_type = "document" BaseDocTemplate.__init__(self, filename, **kw) self.pagesize = A4 self.title = u"ict-ok.org Report" self.author = u"ict-ok.org" self.subject = u"ict-ok.org Report" self.leftMargin = 2 * cm self.rightMargin = 2 * cm self.topMargin = 2 * cm self.bottomMargin = 2 * cm self.showBoundary = False #self.allowSplitting = False rptFrame01 = RptFrame(2 * cm, 25 * mm, 165 * mm, 24.7 * cm) # , showBoundary=True) rptPageT01 = RptPageTemplate(u"RptTP1", [rptFrame01], pagesize=A4) self.addPageTemplates(rptPageT01) registerRptFonts() #addMappingRptFonts() self.styles = getRptStyleSheet() self.seq = Sequencer() self.seq.chain('Chapter01', 'Chapter02') self.seq.chain('Chapter02', 'Chapter03') self.seq.chain('Chapter03', 'Chapter04') self.seq.chain('Chapter04', 'Chapter05') self.seq.chain('Chapter05', 'Chapter06') self.volumeNo = None self.authorName = None self.versionStr = None self.firstPageTitle = None self.lastPageTitle = None self.firstH1Seen = False def __str__(self): return u"" def setVolumeNo(self, arg_VolumeNo=None): self.volumeNo = arg_VolumeNo def setAuthorName(self, arg_AuthorName=None): self.authorName = arg_AuthorName def setVersionStr(self, arg_VersionStr=None): self.versionStr = arg_VersionStr def buildPdf(self): self.build(self._content) def afterFlowable(self, flowable): if flowable.__class__.__name__ == 'Table': try: styleName = flowable.ik_type except AttributeError: styleName = "" if styleName[:7] == 'Heading': text = flowable._cellvalues[0][2].getPlainText() level = int(styleName[7:]) pageNum = self.page self.notify('TOCEntry', (level, text, pageNum)) key = str(hash(flowable)) c = self.canv c.bookmarkPage(key) c.addOutlineEntry(text, key, level=level - 1, closed=0) nbr = flowable._cellvalues[0][0].getPlainText() self.lastPageTitle = "%s %s" % (nbr, text) if not self.firstPageTitle: self.firstPageTitle = "%s %s" % (nbr, text) if flowable.__class__.__name__ == 'Paragraph': styleName = flowable.style.name if styleName[:7] == 'Heading': text = flowable.getPlainText() level = int(styleName[7:]) pageNum = self.page self.notify('TOCEntry', (level, text, pageNum)) key = str(hash(flowable)) c = self.canv c.bookmarkPage(key) c.addOutlineEntry(text, key, level=level - 1, closed=0) nbr = flowable._cellvalues[0][0].getPlainText() self.lastPageTitle = "%s %s" % (nbr, text) if not self.firstPageTitle: self.firstPageTitle = "%s %s" % (nbr, text) def myFirstPage(self, canvas, doc): canvas.saveState() canvas.setFont('Meta2Korrespondenz-Roman', 16) canvas.drawCentredString(self.pagesize[0] / 2.0, self.pagesize[1] - 108, Title) canvas.setFont('Meta2Korrespondenz-Roman', 9) canvas.drawString(1.0 * cm, 1.0 * cm, "First Page / %s" % pageinfo) canvas.restoreState() def myLaterPages(self, canvas, doc): canvas.saveState() canvas.setFont('Meta2Korrespondenz-Roman', 9) canvas.drawString(1.0 * cm, 1.0 * cm, "Page %d %s" % (doc.page, pageinfo)) canvas.restoreState()