[Erp5-report] r43580 gabriel - in /erp5/trunk/utils/cloudooo/cloudooo/handler/pdf: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 22 21:45:33 CET 2011


Author: gabriel
Date: Tue Feb 22 21:45:33 2011
New Revision: 43580

URL: http://svn.erp5.org?rev=43580&view=rev
Log:
implemented code to set metadata in pdf documents

Modified:
    erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/handler.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/tests/testPDFHandler.py

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/handler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/handler.py?rev=43580&r1=43579&r2=43580&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/handler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/handler.py [utf8] Tue Feb 22 21:45:33 2011
@@ -85,3 +85,26 @@ class PDFHandler(object):
     Keyword arguments:
     metadata -- expected an dictionary with metadata.
     """
+    text_template = "InfoKey: %s\nInfoValue: %s\n"
+    text_list = [text_template % (key.capitalize(), value) \
+                                 for key, value in metadata.iteritems()]
+    metadata_file = File(self.document.directory_name,
+                         "".join(text_list),
+                         "txt")
+    output_url = mktemp(suffix=".pdf",
+                        dir=self.document.directory_name)
+    command = ["pdftk",
+               self.document.getUrl(),
+               "update_info",
+               metadata_file.getUrl(),
+               "output",
+               output_url
+               ]
+    stdout, stderr = Popen(command,
+                           stdout=PIPE,
+                           stderr=PIPE,
+                           env=self.environment).communicate()
+    try:
+      return open(output_url).read()
+    finally:
+      self.document.trash()

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/tests/testPDFHandler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/tests/testPDFHandler.py?rev=43580&r1=43579&r2=43580&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/tests/testPDFHandler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/pdf/tests/testPDFHandler.py [utf8] Tue Feb 22 21:45:33 2011
@@ -54,6 +54,17 @@ class TestPDFHandler(HandlerTestCase):
     self.assertNotEquals(metadata, {})
     self.assertEquals(metadata["title"], 'Free Cloud Alliance Presentation')
 
+  def testsetMetadata(self):
+    """Test if the metadata is inserted correctly"""
+    pdf_document = open("data/test.pdf").read()
+    handler = PDFHandler(self.tmp_url, pdf_document, "pdf", **self.kw)
+    metadata_dict = {"title": "Set Metadata Test", "creator": "gabriel\'@"}
+    new_document = handler.setMetadata(metadata_dict)
+    handler = PDFHandler(self.tmp_url, new_document, "pdf", **self.kw)
+    metadata = handler.getMetadata()
+    self.assertEquals(metadata["title"], 'Set Metadata Test')
+    self.assertEquals(metadata['creator'], 'gabriel\'@')
+
 
 def test_suite():
   suite = unittest.TestSuite()



More information about the Erp5-report mailing list