Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7304)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7310)
@@ -548,5 +548,5 @@
         return students_utils.renderPDF(
             self,'Clearance', 'clearance.pdf',
-            self.context.getStudent, studentview)
+            self.context.getStudent(), studentview)
 
 class StudentClearanceManageFormPage(WAeUPEditFormPage):
@@ -781,4 +781,9 @@
     pnav = 4
 
+    def update(self):
+        super(StudyLevelDisplayFormPage, self).update()
+        datatable.need()
+        return
+
     @property
     def title(self):
@@ -825,10 +830,11 @@
         return students_utils.renderPDF(
             self,'Course Registration', 'course_registration.pdf',
-            self.context.getStudent, studentview,
-            tableheader=[('Code','code'), ('Title','title'),
-                         ('Department','dcode'), ('Faculty','fcode'),
-                         ('Credits', 'credits'),
-                         ('Mandatory', 'core_or_elective'),
-                         ('Score', 'score'),('Auto', 'automatic')
+            self.context.getStudent(), studentview,
+            tableheader=[('Sem.','semester', 1.5),('Code','code', 2.5),
+                         ('Title','title', 5),
+                         ('Dept.','dcode', 1.5), ('Faculty','fcode', 1.5),
+                         ('Cred.', 'credits', 1.5),
+                         ('Mand.', 'core_or_elective', 1.5),
+                         ('Score', 'score', 1.5),('Auto', 'automatic', 1.5)
                          ],
             tabledata=self.context.values())
@@ -1263,5 +1269,5 @@
         students_utils = getUtility(IStudentsUtils)
         return students_utils.renderPDF(self,'Payment', 'payment_receipt.pdf',
-            self.context.getStudent, studentview)
+            self.context.getStudent(), studentview)
 
 # We don't need the display form page yet
@@ -1484,5 +1490,5 @@
         return students_utils.renderPDF(
             self,'Bed Allocation', 'bed_allocation.pdf',
-            self.context.getStudent, studentview)
+            self.context.getStudent(), studentview)
 
 class RelocateStudentActionButton(ManageActionButton):
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studyleveleditpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studyleveleditpage.pt	(revision 7304)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studyleveleditpage.pt	(revision 7310)
@@ -20,4 +20,5 @@
     <tr>
       <th>&nbsp;</th>
+      <th>Sem.</th>
       <th>Code</th>
       <th>Title</th>
@@ -35,4 +36,5 @@
         tal:condition="not: value/core_or_elective" />
       </td>
+      <td tal:content="value/semester">SEMESTER</td>
       <td> <a tal:attributes="href value/__name__">
       <span tal:content="value/code">CODE</span>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelmanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelmanagepage.pt	(revision 7304)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelmanagepage.pt	(revision 7310)
@@ -62,4 +62,5 @@
     <tr>
       <th>&nbsp;</th>
+      <th>Sem.</th>
       <th>Code</th>
       <th>Title</th>
@@ -74,8 +75,9 @@
   <tbody>
     <tr tal:repeat="value context/values">
-       <td>
+      <td>
         <input type="checkbox" name="val_id"
   		  tal:attributes="value value/__name__" />
       </td>
+      <td tal:content="value/semester">SEMESTER</td>
       <td> <a tal:attributes="href value/__name__">
       <span tal:content="value/code">CODE</span>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelpage.pt	(revision 7304)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studylevelpage.pt	(revision 7310)
@@ -33,7 +33,8 @@
 <h3>Course Tickets</h3>
 
-<table class="zebra">
+<table class="display dataTable" >
   <thead>
     <tr>
+      <th>Semester</th>
       <th>Code</th>
       <th>Title</th>
@@ -48,4 +49,5 @@
   <tbody>
     <tr tal:repeat="value context/values">
+      <td tal:content="value/semester">SEMESTER</td>
       <td> <a tal:attributes="href value/__name__">
       <span tal:content="value/code">CODE</span>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/utils.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/utils.py	(revision 7304)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/utils.py	(revision 7310)
@@ -23,9 +23,11 @@
 from reportlab.pdfgen import canvas
 from reportlab.lib.units import cm
+from reportlab.lib.enums import TA_RIGHT
 from reportlab.lib.pagesizes import A4
-from reportlab.lib.styles import getSampleStyleSheet
+from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
 from reportlab.platypus import (Frame, Paragraph, Image,
     Table, Spacer)
 from reportlab.platypus.tables import TableStyle
+from reportlab.platypus.flowables import PageBreak
 from zope.component import getUtility
 from zope.formlib.form import setUpEditWidgets
@@ -65,5 +67,5 @@
         )
 
-def render_student_data(student, studentview):
+def render_student_data(studentview):
     set_up_widgets(studentview, ignore_request=True)
     data = []
@@ -89,4 +91,18 @@
     return table
 
+def insert_footer(pdf,width,style,text=None):
+      story = []
+      frame_footer = Frame(1*cm,0,width-(2*cm),1*cm)
+      timestamp = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
+      left_text = '<font size=10>%s</font>' % timestamp
+      story.append(Paragraph(left_text, style["Normal"]))
+      frame_footer.addFromList(story,pdf)
+      story = []
+      frame_footer = Frame(1*cm,0,width-(2*cm),1*cm)
+      right_text = '<font size=10>%s Page %s</font>' % (
+          text, pdf.getPageNumber())
+      story.append(Paragraph(right_text, style["Right"]))
+      frame_footer.addFromList(story,pdf)
+
 def render_table_data(tableheader,tabledata):
     data = []
@@ -96,5 +112,5 @@
     for element in tableheader:
         field = '<strong><font size=10>%s</font></strong>' % element[0]
-        field = Paragraph(field, style["BodyText"])
+        field = Paragraph(field, style["Normal"])
         line.append(field)
     data.append(line)
@@ -109,5 +125,6 @@
     # ToDo: The table does not show up if there are too many line
     # and it thus doesn't fit on the page
-    table = Table(data,splitByRow=True,style=CONTENT_STYLE)
+    table = Table(data,colWidths=[
+        element[2]*cm for element in tableheader],style=CONTENT_STYLE)
     return table
 
@@ -188,5 +205,9 @@
         pdf.setCreator('WAeUP SIRP')
         width, height = A4
+        footer_text = view.label
+        if student is not None:
+            footer_text = "%s - %s - " % (student.student_id, footer_text)
         style = getSampleStyleSheet()
+        style.add(ParagraphStyle(name='Right', alignment=TA_RIGHT))
         pdf.line(1*cm,height-(1.8*cm),width-(1*cm),height-(1.8*cm))
 
@@ -202,10 +223,11 @@
 
         # Insert student data table
-        if student:
+        if student is not None:
             story.append(Spacer(1, 12))
-            studenttable = render_student_data(student, studentview)
+            studenttable = render_student_data(studentview)
             story.append(studenttable)
 
         story.append(Spacer(1, 12))
+        #story.append(PageBreak())
         set_up_widgets(view)
         data = []
@@ -247,20 +269,15 @@
             view.flash('Error in image file.')
             return view.redirect(view.url(view.context))
-
+        insert_footer(pdf,width,style,footer_text)
+        pdf.showPage()
+        frame_body = Frame(1*cm,1*cm,width-(2*cm),height-(1.5*cm))
         # Insert content table
         if tabledata and tableheader:
             story = []
-            story.append(Spacer(1, 12))
+            #story.append(Spacer(1, 12))
             contenttable = render_table_data(tableheader,tabledata)
             story.append(contenttable)
-            #import pdb; pdb.set_trace()
             frame_body.addFromList(story,pdf)
-
-        story = []
-        frame_footer = Frame(1*cm,0,width-(2*cm),1*cm)
-        timestamp = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
-        f_text = '<font size=10>%s</font>' % timestamp
-        story.append(Paragraph(f_text, style["Normal"]))
-        frame_footer.addFromList(story,pdf)
+        insert_footer(pdf,width,style,footer_text)
         view.response.setHeader(
             'Content-Type', 'application/pdf')
