reportlab/platypus/doctemplate.py
changeset 221 3d71b66b14c6
parent 218 274db2129c04
child 225 1f58b00cf30e
equal deleted inserted replaced
220:3b27693ac273 221:3d71b66b14c6
    29 # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    29 # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    30 # PERFORMANCE OF THIS SOFTWARE. 
    30 # PERFORMANCE OF THIS SOFTWARE. 
    31 #
    31 #
    32 ###############################################################################
    32 ###############################################################################
    33 #	$Log: doctemplate.py,v $
    33 #	$Log: doctemplate.py,v $
       
    34 #	Revision 1.8  2000/05/16 16:15:16  rgbecker
       
    35 #	Changes related to removal of SimpleFlowDocument
       
    36 #
    34 #	Revision 1.7  2000/05/16 14:28:55  rgbecker
    37 #	Revision 1.7  2000/05/16 14:28:55  rgbecker
    35 #	Fixes/Changes to get testplatypus to work with new framework
    38 #	Fixes/Changes to get testplatypus to work with new framework
    36 #
    39 #	
    37 #	Revision 1.6  2000/05/15 15:07:32  rgbecker
    40 #	Revision 1.6  2000/05/15 15:07:32  rgbecker
    38 #	Added drawPage
    41 #	Added drawPage
    39 #	
    42 #	
    40 #	Revision 1.5  2000/05/13 08:33:53  rgbecker
    43 #	Revision 1.5  2000/05/13 08:33:53  rgbecker
    41 #	fix typo in import
    44 #	fix typo in import
    50 #	Single actions only in ActionFlowables
    53 #	Single actions only in ActionFlowables
    51 #	
    54 #	
    52 #	Revision 1.1  2000/05/12 12:53:33  rgbecker
    55 #	Revision 1.1  2000/05/12 12:53:33  rgbecker
    53 #	Initial try at a document template class
    56 #	Initial try at a document template class
    54 #	
    57 #	
    55 __version__=''' $Id: doctemplate.py,v 1.7 2000/05/16 14:28:55 rgbecker Exp $ '''
    58 __version__=''' $Id: doctemplate.py,v 1.8 2000/05/16 16:15:16 rgbecker Exp $ '''
    56 __doc__="""
    59 __doc__="""
    57 More complicated Document model
    60 More complicated Document model
    58 """
    61 """
    59 from layout import *
    62 from layout import *
    60 from layout import _doNothing
    63 from layout import _doNothing
   325 		while len(flowables):
   328 		while len(flowables):
   326 			self.clean_hanging()
   329 			self.clean_hanging()
   327 			self.handle_flowable(flowables)
   330 			self.handle_flowable(flowables)
   328 
   331 
   329 		self._endBuild()
   332 		self._endBuild()
       
   333 
       
   334 class SimpleDocTemplate(BaseDocTemplate):
       
   335 	def handle_pageBegin(self):
       
   336 		self._handle_pageBegin()
       
   337 		self._handle_nextPageTemplate('Later')
       
   338 
       
   339 	def build(self,flowables,onFirstPage=_doNothing, onLaterPages=_doNothing):
       
   340 		frameT = BasicFrame(self.leftMargin, self.bottomMargin, self.width, self.height, id='normal')
       
   341 		self.addPageTemplates([PageTemplate(id='First',frames=frameT, onPage=onFirstPage),
       
   342 						PageTemplate(id='Later',frames=frameT, onPage=onLaterPages)])
       
   343 		BaseDocTemplate.build(self,flowables)
       
   344 
       
   345 if __name__ == '__main__':
       
   346 	##########################################################
       
   347 	##
       
   348 	##	 testing
       
   349 	##
       
   350 	##########################################################
       
   351 	def randomText():
       
   352 		#this may or may not be appropriate in your company
       
   353 		from random import randint, choice
       
   354 
       
   355 		RANDOMWORDS = ['strategic','direction','proactive',
       
   356 		'reengineering','forecast','resources',
       
   357 		'forward-thinking','profit','growth','doubletalk',
       
   358 		'venture capital','IPO']
       
   359 
       
   360 		sentences = 5
       
   361 		output = ""
       
   362 		for sentenceno in range(randint(1,5)):
       
   363 			output = output + 'Blah'
       
   364 			for wordno in range(randint(10,25)):
       
   365 				if randint(0,4)==0:
       
   366 					word = choice(RANDOMWORDS)
       
   367 				else:
       
   368 					word = 'blah'
       
   369 				output = output + ' ' +word
       
   370 			output = output+'.'
       
   371 		return output
       
   372 
       
   373 	def myFirstPage(canvas, doc):
       
   374 		canvas.saveState()
       
   375 		canvas.setStrokeColor(red)
       
   376 		canvas.setLineWidth(5)
       
   377 		canvas.line(66,72,66,PAGE_HEIGHT-72)
       
   378 		canvas.setFont('Times-Bold',24)
       
   379 		canvas.drawString(108, PAGE_HEIGHT-108, "PLATYPUS")
       
   380 		canvas.setFont('Times-Roman',12)
       
   381 		canvas.drawString(4 * inch, 0.75 * inch, "First Page")
       
   382 		canvas.restoreState()
       
   383 
       
   384 	def myLaterPages(canvas, doc):
       
   385 		canvas.saveState()
       
   386 		canvas.setStrokeColor(red)
       
   387 		canvas.setLineWidth(5)
       
   388 		canvas.line(66,72,66,PAGE_HEIGHT-72)
       
   389 		canvas.setFont('Times-Roman',12)
       
   390 		canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % doc.page)
       
   391 		canvas.restoreState()
       
   392 
       
   393 	def run():
       
   394 		objects_to_draw = []
       
   395 		from reportlab.lib.styles import ParagraphStyle
       
   396 		from paragraph import Paragraph
       
   397 
       
   398 		#need a style
       
   399 		normal = ParagraphStyle('normal')
       
   400 		normal.firstLineIndent = 18
       
   401 		normal.spaceBefore = 6
       
   402 		import random
       
   403 		for i in range(15):
       
   404 			height = 0.5 + (2*random.random())
       
   405 			box = XBox(6 * inch, height * inch, 'Box Number %d' % i)
       
   406 			objects_to_draw.append(box)
       
   407 			para = Paragraph(randomText(), normal)
       
   408 			objects_to_draw.append(para)
       
   409 
       
   410 		SimpleDocTemplate('doctemplate.pdf',DEFAULT_PAGE_SIZE).build(objects_to_draw,
       
   411 			onFirstPage=myFirstPage,onLaterPages=myLaterPages)
       
   412 
       
   413 	run()