Index: /main/waeup.ikoba/trunk/setup.py
===================================================================
--- /main/waeup.ikoba/trunk/setup.py	(revision 12181)
+++ /main/waeup.ikoba/trunk/setup.py	(revision 12182)
@@ -42,4 +42,5 @@
     'z3c.evalexception',
     'paypalrestsdk',
+    'PyPDF2',
     ],
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12181)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12182)
@@ -1029,4 +1029,21 @@
             omit_fields=self.omit_fields)
 
+
+class PDFMergeDocumentSlipPage(PDFDocumentSlipPage):
+    """Deliver pdf file including metadata.
+    """
+    grok.context(ICustomerPDFDocument)
+
+    def render(self):
+        portal_language = getUtility(IIkobaUtils).PORTAL_LANGUAGE
+        customerview = CustomerBasePDFFormPage(self.context.customer,
+            self.request, self.omit_fields)
+        customers_utils = getUtility(ICustomersUtils)
+        return customers_utils.renderPDF(
+            self, 'pdfdocument_slip.pdf',
+            self.context.customer, customerview,
+            omit_fields=self.omit_fields,
+            mergefiles=self.context.connected_files)
+
 # Pages for customer contracts
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12181)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12182)
@@ -1091,4 +1091,20 @@
         open(path, 'wb').write(self.browser.contents)
         print "Sample document_slip.pdf written to %s" % path
+        # Officers can open merged pdf document slips
+        pdfdocument = createObject('waeup.CustomerPDFDocument')
+        pdfdocument.title = u'My first document'
+        self.customer['documents'].addDocument(pdfdocument)
+        # Add pdf file
+        file_id = IFileStoreNameChooser(pdfdocument).chooseName(attr='sample.pdf')
+        fs = ExtFileStore(root=self.dc_root)
+        pdffile = open(SAMPLE_PDF, 'rb')
+        fs.createFile(file_id, pdffile)
+        self.browser.open(self.customer_path + '/documents/d102')
+        self.browser.getLink("Download document 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(), 'pdfdocument_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample pdfdocument_slip.pdf written to %s" % path
 
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py	(revision 12181)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py	(revision 12182)
@@ -21,4 +21,5 @@
 import os
 import grok
+from StringIO import StringIO
 from reportlab.lib import colors
 from reportlab.lib.units import cm
@@ -26,4 +27,6 @@
 from reportlab.lib.styles import getSampleStyleSheet
 from reportlab.platypus import Paragraph, Image, Table, Spacer
+from reportlab.platypus.flowables import PageBreak
+from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter
 from zope.event import notify
 from zope.schema.interfaces import ConstraintNotSatisfied
@@ -334,5 +337,5 @@
                   note=None, signatures=None, sigs_in_footer=(),
                   show_scans=True, show_history=True, topMargin=1.5,
-                  omit_fields=()):
+                  omit_fields=(), mergefiles=None):
         """Render pdf slips for various pages.
         """
@@ -419,3 +422,13 @@
             view.flash('Error in image file.')
             return view.redirect(view.url(view.context))
+
+        if mergefiles:
+            merger = PdfFileMerger()
+            merger.append(StringIO(pdf_stream))
+            for file in mergefiles:
+                merger.append(file[1])
+            tmp = StringIO()
+            merger.write(tmp)
+            return tmp.getvalue()
+
         return pdf_stream
Index: /main/waeup.ikoba/trunk/versions.cfg
===================================================================
--- /main/waeup.ikoba/trunk/versions.cfg	(revision 12181)
+++ /main/waeup.ikoba/trunk/versions.cfg	(revision 12182)
@@ -177,2 +177,8 @@
 # paypalrestsdk==1.6.1
 requests = 2.4.3
+
+# Added by buildout at 2014-12-09 08:56:22.978680
+
+# Required by:
+# waeup.ikoba==0.2dev
+PyPDF2 = 1.23
