[Erp5-report] r42893 jp - /erp5/trunk/products/ERP5/Document/PDFDocument.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 1 15:47:08 CET 2011


Author: jp
Date: Tue Feb  1 15:47:08 2011
New Revision: 42893

URL: http://svn.erp5.org?rev=42893&view=rev
Log:
Added conversion to DJVU

Modified:
    erp5/trunk/products/ERP5/Document/PDFDocument.py

Modified: erp5/trunk/products/ERP5/Document/PDFDocument.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/PDFDocument.py?rev=42893&r1=42892&r2=42893&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/PDFDocument.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/PDFDocument.py [utf8] Tue Feb  1 15:47:08 2011
@@ -87,6 +87,14 @@ class PDFDocument(Image):
         data = self._convertToText()
         self.setConversion(data, mime=mime, format='txt')
         return (mime, data)
+    elif format in ('djvu', 'DJVU'):
+      try:
+        return self.getConversion(format='djvu')
+      except KeyError:
+        mime = 'image/vnd.djvu'
+        data = self._convertToDJVU()
+        self.setConversion(data, mime=mime, format='djvu')
+        return (mime, data)
     elif format is None:
       return self.getContentType(), self.getData()
     else:
@@ -197,6 +205,31 @@ class PDFDocument(Image):
                                                           'href="asEntireHTML')
     return h
 
+  security.declarePrivate('_convertToDJVU')
+  def _convertToDJVU(self):
+    """
+    Convert the PDF text content to DJVU with pdf2djvu
+    """
+    if not self.hasData():
+      return ''
+    tmp = tempfile.NamedTemporaryFile()
+    tmp.write(self.getData())
+    tmp.seek(0)
+
+    command_result = None
+    try:
+      command = ['pdf2djvu', tmp.name]
+      try:
+        command_result = Popen(command, stdout=PIPE).communicate()[0]
+      except OSError, e:
+        if e.errno == errno.ENOENT:
+          raise ConversionError('pdf2djvu was not found')
+        raise
+
+    finally:
+      tmp.close()
+    return command_result
+
   security.declareProtected(Permissions.AccessContentsInformation, 'getContentInformation')
   def getContentInformation(self):
     """



More information about the Erp5-report mailing list