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 |
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() |