1 # -*- coding: utf-8 -*-
3 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
7 from os import path, system, popen2, unlink, rename
8 from tempfile import NamedTemporaryFile
11 class LatexFragment(object):
12 def __init__(self, code, image_format='png', dirname="/tmp", resize=None):
15 self.format = image_format
16 self.dirname = dirname
20 if self.temp is not None:
22 self.temp = NamedTemporaryFile('r',
23 suffix='.'+self.format,
24 prefix=path.join(self.dirname,'librarian-latex-'),
27 (processor, _out) = popen2("l2p -o '%(out)s' -d 1200"
28 % {'out': self.temp.name},
31 processor.write(isinstance(self.code, unicode) and \
32 self.code.encode('utf-8') or\
34 print "LATEX: %s" % isinstance(self.code, unicode) and \
35 self.code.encode('utf-8') or\
38 _out.read() # waits for the process to finish
40 # Resize the image if needed
42 n, e = path.splitext(self.path)
43 aside_name = n + "_orig" + e
44 rename(self.path, aside_name)
45 system("convert -resize x%d %s %s" % (self.resize, aside_name, self.path))
47 except Exception as e:
48 import pdb; pdb.set_trace()
49 if path.exists(self.temp.name):
50 unlink(self.temp.name)
54 def filename(self, splitext=False):
56 n = path.basename(self.temp.name)
58 return path.splitext(n)
63 return path.join(self.dirname, self.filename)
67 unlink(self.temp.name)