From 7dbabca8d7b5cab1034ea63cb44c52a974068e5a Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Tue, 1 Feb 2011 14:47:08 +0000 Subject: [PATCH] Added conversion to DJVU git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@42893 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/PDFDocument.py | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/product/ERP5/Document/PDFDocument.py b/product/ERP5/Document/PDFDocument.py index 4ec8902c75..41d73a1104 100644 --- a/product/ERP5/Document/PDFDocument.py +++ b/product/ERP5/Document/PDFDocument.py @@ -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): """ -- 2.30.9