[reportlab-users] Example, please: putting TOC at the beginning
   
    Aaron Watters
     
    reportlab-users@reportlab.com
       
    Tue, 11 Jun 2002 12:53:41 -0400
    
    
  
Well, if you know how many pages are in the toc you can put the toc into 
one or more forms
-- "draw" the forms at the beginning of the process and then "define" 
them at the end (forms
are lazy and may be defined after they have been referenced).  Just to 
be confusing I'm talking about
"PDF xform objects" defined in reportlab using canvas.beginForm ... 
canvas.endForm, not
"Adobe forms" which are not yet supported in reportlab... not just 
yet... ;).
    -- Aaron Watters
Bill Bell wrote:
>My code is very simple, and appears below. Would someone please tell me how to move the table of contents to the beginning of the document from the end.
>
>Thanks!
>
>Bill
>
>------------------------
>
>class SimpleDocTemplateDer ( SimpleDocTemplate ):
>    def multiBuild(self,flowables,onFirstPage=_doNothing, onLaterPages=_doNothing):
>        self._calc()    #in case we changed margins sizes etc
>        frameT = Frame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
>        self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage,pagesize=self.pagesize),
>                        PageTemplate(id='Later',frames=frameT, onPage=onLaterPages,pagesize=self.pagesize)])
>        if onFirstPage is _doNothing and hasattr(self,'onFirstPage'):
>            self.pageTemplates[0].beforeDrawPage = self.onFirstPage
>        if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
>            self.pageTemplates[1].beforeDrawPage = self.onLaterPages
>        BaseDocTemplate.multiBuild(self,flowables)
>
>    def afterFlowable ( self, flowable ):
>        if hasattr(flowable, 'style'):
>            if flowable . style . name == 'Section':
>                pageTabs [ self . page ] = flowable . getPlainText ( )
>                self . notify ( 'TOCEntry', ( 0, flowable . getPlainText ( ), self . page ) )
>
>def go():
>    toc = TableOfContents ( )
>    Elements . append ( toc )
>    doc = SimpleDocTemplateDer ( 'PDFcomplete.pdf',
>        leftMargin = 0.5 * inch, rightMargin = 0.5 * inch, topMargin = 1 * inch, bottomMargin = 0.75 * inch )
>    doc . multiBuild ( Elements, onFirstPage = newPage, onLaterPages = newPage )
>
>
>
>------------
>"It is the time that you have wasted for your rose that makes your rose so important."--St-Exupery
>
>
>_______________________________________________
>reportlab-users mailing list
>reportlab-users@reportlab.com
>http://two.pairlist.net/mailman/listinfo/reportlab-users
>
>