Index: main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 13482)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 13489)
@@ -335,4 +335,10 @@
 
     @property
+    def title(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Matriculation Number'), 'waeup.kofa',
+            target_language=portal_language)
+
+    @property
     def label(self):
         portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
@@ -355,4 +361,37 @@
             pre_text=pre_text, post_text='')
 
+class ExportPersonalDataSlip(UtilityView, grok.View):
+    """Deliver a PDF notification slip.
+    """
+    grok.context(ICustomStudent)
+    grok.name('personal_data_slip.pdf')
+    grok.require('waeup.viewStudent')
+    prefix = 'form'
+    note = None
+
+    form_fields = grok.AutoFields(ICustomStudentPersonal).omit('personal_updated')
+    omit_fields = ('suspended', 'suspended_comment', 'adm_code', 'certificate')
+
+    @property
+    def title(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Personal Data'), 'waeup.kofa',
+            target_language=portal_language)
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Personal Data Slip\n'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.display_fullname
+
+    def render(self):
+        studentview = StudentBasePDFFormPage(self.context.student,
+            self.request, self.omit_fields)
+        students_utils = getUtility(IStudentsUtils)
+        return students_utils.renderPDF(self, 'personal_data_slip.pdf',
+            self.context.student, studentview, note=self.note,
+            omit_fields=self.omit_fields)
+
 class CustomAccommodationManageFormPage(NigeriaAccommodationManageFormPage):
     """ Page to manage bed tickets.
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 13482)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 13489)
@@ -499,4 +499,26 @@
         return
 
+    def test_personal_data_slip(self):
+        # Login as student
+        self.browser.open(self.login_path)
+        IWorkflowState(self.student).setState('school fee paid')
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = self.student_id
+        self.browser.getControl(name="form.password").value = 'spwd'
+        self.browser.getControl("Login").click()
+        self.browser.getLink("Personal Data").click()
+        self.assertRaises(
+            LinkNotFoundError,
+            self.browser.getLink, 'Download personal data slip')
+        self.student.father_name = u'Rudolf'
+        self.browser.open(self.personal_path)
+        self.browser.getLink("Download personal data slip").click()
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.headers['Content-Type'], 'application/pdf')
+        path = os.path.join(samples_dir(), 'personal_data_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample PDF personal_data_slip.pdf written to %s" % path
+        return
+
     def test_student_course_registration(self):
         IWorkflowState(self.student).setState('school fee paid')
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/viewlets.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/viewlets.py	(revision 13482)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/viewlets.py	(revision 13489)
@@ -28,5 +28,7 @@
 from waeup.kofa.students.browser import StudyLevelDisplayFormPage
 
-from waeup.aaue.students.interfaces import ICustomStudentStudyLevel
+from waeup.aaue.students.interfaces import (
+    ICustomStudent, ICustomStudentStudyLevel)
+from waeup.aaue.students.browser import CustomStudentPersonalDisplayFormPage
 from waeup.aaue.interfaces import MessageFactory as _
 
@@ -98,4 +100,19 @@
         return self.view.url(self.view.context, self.target)
 
+class PersonalDataSlipActionButton(ManageActionButton):
+    grok.order(3)
+    grok.context(ICustomStudent)
+    grok.view(CustomStudentPersonalDisplayFormPage)
+    grok.require('waeup.viewStudent')
+    icon = 'actionicon_pdf.png'
+    text = _('Download personal data slip')
+    target = 'personal_data_slip.pdf'
+
+    @property
+    def target_url(self):
+        if not self.context.father_name:
+            return ''
+        return self.view.url(self.view.context, self.target)
+
 class StudentPassportActionButton(StudentPassportActionButton):
     """Inherit from same class in base package, not from kofacustom.nigeria 
