Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py	(revision 10317)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py	(revision 10318)
@@ -622,38 +622,8 @@
         return img
 
-    def getWidgetsTable(self, form_fields, context, view, lang='en',
-                        domain='waeup.kofa', separators=None,
-                        course_label=None, course_link=None, dept=None,
-                        faculty=None, colWidths=None):
-        """Return a reportlab `Table` instance, created from widgets
-        determined by `form_fields` and `context`.
-
-        - `form_fields`
-           is a list of schema fields as created by grok.AutoFields.
-        - `context`
-           is some object whose content is rendered here.
-        - `view`
-           is currently not used but supposed to be a view which is
-           actually rendering a PDF document.
-        - `lang`
-           the portal language. Used for translations of strings.
-        - `domain`
-           the translation domain used for translations of strings.
-        - `separators`
-           a list of separators.
-        - `course_label` and `course_link`
-           if a course should be added to the table, `course_label`
-           and `course_link` can be given, both being strings. They
-           will be rendered in an extra-row.
-        - `dept` and `faculty`
-           if these are given, we render extra rows with faculty and
-           department.
-        """
+    def _getWidgetsTableData(self, widgets,
+                             separators, domain, lang, table_style):
+        row_num = 0
         table_data = []
-        table_style = [#('LEFTPADDING', (0,0), (0,-1), 0), # indentation
-                       ('VALIGN', (0,0), (-1,-1), 'TOP'),
-                       ]
-        row_num = 0
-        widgets = self._setUpWidgets(form_fields, context)
         for widget in widgets:
             if separators and separators.get(widget.name):
@@ -677,4 +647,44 @@
             table_data.append([f_label,f_text])
             row_num += 1
+        return table_data, row_num, table_style
+
+    def getWidgetsTable(self, form_fields, context, view, lang='en',
+                        domain='waeup.kofa', separators=None,
+                        course_label=None, course_link=None, dept=None,
+                        faculty=None, colWidths=None, twoDataCols=False):
+        """Return a reportlab `Table` instance, created from widgets
+        determined by `form_fields` and `context`.
+
+        - `form_fields`
+           is a list of schema fields as created by grok.AutoFields.
+        - `context`
+           is some object whose content is rendered here.
+        - `view`
+           is currently not used but supposed to be a view which is
+           actually rendering a PDF document.
+        - `lang`
+           the portal language. Used for translations of strings.
+        - `domain`
+           the translation domain used for translations of strings.
+        - `separators`
+           a list of separators.
+        - `course_label` and `course_link`
+           if a course should be added to the table, `course_label`
+           and `course_link` can be given, both being strings. They
+           will be rendered in an extra-row.
+        - `dept` and `faculty`
+           if these are given, we render extra rows with faculty and
+           department.
+        - `twoDataCols`
+           render widgets in a parent table with two columns.
+        """
+        table_style = [#('LEFTPADDING', (0,0), (0,-1), 0), # indentation
+                       ('VALIGN', (0,0), (-1,-1), 'TOP'),
+                       ]
+        widgets = self._setUpWidgets(form_fields, context)
+
+        # Determine table data
+        table_data, row_num, table_style = self._getWidgetsTableData(
+            widgets, separators, domain, lang, table_style)
 
         # Add course (admitted, etc.) if applicable
