Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/pdf.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/pdf.py	(revision 10318)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/pdf.py	(revision 10319)
@@ -53,4 +53,5 @@
     column_two_fields = ('applicant_id', 'reg_number',
         'firstname', 'middlename', 'lastname')
+    two_columns_design_fields = []
 
     @property
@@ -132,12 +133,11 @@
 
         # create two-column header table
-        data_left = []
-        data_right = []
         # append photograph to the left
         img_path = getattr(
             getUtility(IExtFileStore).getFileByContext(self.context),
             'name', DEFAULT_PASSPORT_IMAGE_PATH)
-        data_left.append([creator.getImage(img_path)])
+        data_left = [[creator.getImage(img_path)]]
         table_left = Table(data_left,style=SLIP_STYLE)
+
         # append column-two fields to the right
         fields = [
@@ -150,9 +150,21 @@
         data.append(header_table)
 
+        # append two-column table of widgets of those fields defined in
+        # two_columns_design_fields
+        fields = [
+            field for field in self.form_fields
+                if not field.__name__ in self.column_two_fields and
+                field.__name__ in self.two_columns_design_fields]
+        if fields:
+            data.append(creator.getWidgetsTable(
+                fields, self.context, view, lang=portal_language,
+                domain='waeup.kofa', twoDataCols=True))
+
         # append widgets except those already added in column two
         dept, faculty = self._getDeptAndFaculty()
         fields = [
             field for field in self.form_fields
-                if not field.__name__ in self.column_two_fields]
+                if not field.__name__ in self.column_two_fields and
+                not field.__name__ in self.two_columns_design_fields]
         data.append(creator.getWidgetsTable(
             fields, self.context, view, lang=portal_language,
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py	(revision 10318)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pdf.py	(revision 10319)
@@ -622,14 +622,15 @@
         return img
 
-    def _getWidgetsTableData(self, widgets,
-                             separators, domain, lang, table_style):
+    def _getWidgetsTableData(self, widgets, separators, domain,
+                             lang, table_style, twoDataCols):
         row_num = 0
         table_data = []
         for widget in widgets:
-            if separators and separators.get(widget.name):
+            # We do not render headlines in multi-column design
+            if twoDataCols is False and separators and separators.get(widget.name):
                 f_headline = translate(
                     separators[widget.name], domain, target_language=lang)
                 f_headline = Paragraph(f_headline, HEADLINE1_STYLE)
-                table_data.append([f_headline ])
+                table_data.append([f_headline])
                 table_style.append(('SPAN', (0,row_num), (-1,row_num)),)
                 table_style.append(
@@ -676,9 +677,11 @@
            if these are given, we render extra rows with faculty and
            department.
+        - `colWidths`
+           defines the the column widths of the data in the right column
+           of base data (right to the passport image).
         - `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'),
+           renders data widgets in a parent table with two columns.
+        """
+        table_style = [('VALIGN', (0,0), (-1,-1), 'TOP'),
                        ]
         widgets = self._setUpWidgets(form_fields, context)
@@ -686,5 +689,5 @@
         # Determine table data
         table_data, row_num, table_style = self._getWidgetsTableData(
-            widgets, separators, domain, lang, table_style)
+            widgets, separators, domain, lang, table_style, twoDataCols)
 
         # Add course (admitted, etc.) if applicable
@@ -696,5 +699,17 @@
             table_data, row_num, dept, faculty, lang, domain)
 
-        # Create table
+        # render two-column table of tables
+        lines = len(table_data)
+        middle = lines/2
+        if twoDataCols is True and lines > 2:
+            table_left = Table(table_data[:middle+1],
+                               style=table_style, colWidths=[5*cm, 4*cm])
+            table_right = Table(table_data[middle+1:],
+                                style=table_style, colWidths=[5*cm, 4*cm])
+            table_style.append(('LEFTPADDING', (0,0), (0,-1), 3*cm),)
+            table = Table([[table_left, table_right],],style=table_style)
+            return table
+
+        # render single table
         table = Table(
             table_data,style=table_style, colWidths=colWidths) #, rowHeights=14)
