reportlab/platypus/doctemplate.py
changeset 1267 118eabbf5ba4
parent 1222 e52d533376bc
child 1268 158ffc339d38
equal deleted inserted replaced
1266:11af6c3e6bbe 1267:118eabbf5ba4
     1 #copyright ReportLab Inc. 2000
     1 #copyright ReportLab Inc. 2000
     2 #see license.txt for license details
     2 #see license.txt for license details
     3 #history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/reportlab/platypus/doctemplate.py?cvsroot=reportlab
     3 #history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/reportlab/platypus/doctemplate.py?cvsroot=reportlab
     4 #$Header: /tmp/reportlab/reportlab/platypus/doctemplate.py,v 1.43 2001/09/20 16:02:38 aaron_watters Exp $
     4 #$Header: /tmp/reportlab/reportlab/platypus/doctemplate.py,v 1.44 2001/10/01 09:33:25 rgbecker Exp $
     5 
     5 
     6 __version__=''' $Id: doctemplate.py,v 1.43 2001/09/20 16:02:38 aaron_watters Exp $ '''
     6 __version__=''' $Id: doctemplate.py,v 1.44 2001/10/01 09:33:25 rgbecker Exp $ '''
     7 
     7 
     8 __doc__="""
     8 __doc__="""
     9 This module contains the core structure of platypus.
     9 This module contains the core structure of platypus.
    10 
    10 
    11 Platypus constructs documents.	Document styles are determined by DocumentTemplates.
    11 Platypus constructs documents.	Document styles are determined by DocumentTemplates.
   143 		a class based page routine.  Called before any flowables for
   143 		a class based page routine.  Called before any flowables for
   144 		this page are processed."""
   144 		this page are processed."""
   145 		pass
   145 		pass
   146 
   146 
   147 	def checkPageSize(self,canv,doc):
   147 	def checkPageSize(self,canv,doc):
   148 		'''This gets called by the template framework'''
   148 		'''This gets called by the template framework
   149 		#print "self.pagesize, canv._pagesize, doc.pagesize",(self.pagesize, canv._pagesize, doc.pagesize)
   149 		If canv size != doc size then the canv size is set to
   150 		### NEVER EVER EVER COMPARE FLOATS FOR EQUALITY
   150 		the template size or if that's not available to the 
       
   151 		doc size.
       
   152 		'''
       
   153 		#### NEVER EVER EVER COMPARE FLOATS FOR EQUALITY
       
   154 		#RGB converting pagesizes to ints means we are accurate to one point
       
   155 		#RGB I suggest we should be aiming a little better
   151 		cp = None
   156 		cp = None
   152 		dp = None
   157 		dp = None
   153 		sp = None
   158 		sp = None
   154 		if canv._pagesize: cp = map(int, canv._pagesize)
   159 		if canv._pagesize: cp = map(int, canv._pagesize)
   155 		if self.pagesize: sp = map(int, self.pagesize)
   160 		if self.pagesize: sp = map(int, self.pagesize)
   156 		if doc.pagesize: dp = map(int, doc.pagesize)
   161 		if doc.pagesize: dp = map(int, doc.pagesize)
   157 		if cp != dp:
   162 		if cp != dp:
   158 			if sp:
   163 			if sp:
   159 				canv.setPageSize(self.pagesize)
   164 				canv.setPageSize(self.pagesize)
   160 			elif cp != dp:
   165 			else:
   161 				canv.setPageSize(doc.pagesize)
   166 				canv.setPageSize(doc.pagesize)
   162 
   167 
   163 	def afterDrawPage(self, canv, doc):
   168 	def afterDrawPage(self, canv, doc):
   164 		"""This is called after the last flowable for the page has
   169 		"""This is called after the last flowable for the page has
   165 		been processed.  You might use this if the page header or
   170 		been processed.  You might use this if the page header or
   625 			   footers, etcetera. They can use external variables to vary
   630 			   footers, etcetera. They can use external variables to vary
   626 			   the look (for example providing page numbering or section names).
   631 			   the look (for example providing page numbering or section names).
   627 		"""
   632 		"""
   628 		self._calc()	#in case we changed margins sizes etc
   633 		self._calc()	#in case we changed margins sizes etc
   629 		frameT = Frame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
   634 		frameT = Frame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
   630 		self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage),
   635 		self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage,pagesize=self.pagesize),
   631 						PageTemplate(id='Later',frames=frameT, onPage=onLaterPages)])
   636 						PageTemplate(id='Later',frames=frameT, onPage=onLaterPages,pagesize=self.pagesize)])
   632 		if onFirstPage is _doNothing and hasattr(self,'onFirstPage'):
   637 		if onFirstPage is _doNothing and hasattr(self,'onFirstPage'):
   633 			self.pageTemplates[0].beforeDrawPage = self.onFirstPage
   638 			self.pageTemplates[0].beforeDrawPage = self.onFirstPage
   634 		if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
   639 		if onLaterPages is _doNothing and hasattr(self,'onLaterPages'):
   635 			self.pageTemplates[1].beforeDrawPage = self.onLaterPages
   640 			self.pageTemplates[1].beforeDrawPage = self.onLaterPages
   636 		BaseDocTemplate.build(self,flowables)
   641 		BaseDocTemplate.build(self,flowables)