Esempio n. 1
0
    def create(self):
        manuscript = request.POST['manuscript']
        encoding = request.POST['encoding']
        embedmap = None

        if request.POST['embedmap'] == 'noembed':
            embedmap = ['ptex-noEmbed', 'otf-noEmbed']
        if request.POST['embedmap'] == 'kozuka':
            embedmap = ['ptex-kozuka', 'otf-kozuka']
        if request.POST['embedmap'] == 'hiragino':
            embedmap = ['ptex-hiragino', 'otf-hiragino']
        if request.POST['embedmap'] == 'morisawa':
            embedmap = ['ptex-morisawa', 'otf-morisawa']

        p = glue.fork_proc(embedmap=embedmap)
        try:
            (stream, error) = p.communicate(Manuscript(manuscript.value, encoding).__str__())
        except UnicodeDecodeError:
            return render('index.genshi', extra_vars=dict(error=u'Cannot decode input stream as %s' % encoding))
        except UnicodeEncodeError:
            return render('index.genshi', extra_vars=dict(error=u'Cannot transcode input stream as native TeX encoding'))            
        code = p.wait()
        if code or error:
            return render('index.genshi', extra_vars=dict(error=unicode(TeXOperationError(code, error))))
        response.content_type = 'application/pdf'
        # NB: Use UTF-8 for Safari, Firefox, or other sane browsers,
        # SHIFT-JIS for IE/MacIE, EUC-JP for Netscape 4.7
        response.headerlist.append(('Content-Disposition', 'attachment; filename="%s"' % u'output.pdf'.encode('UTF-8')))
        response.headerlist.append(('Refresh', '0; url=%s' % url_for(controller=u'adhoc', action=u'index')))
        return stream
Esempio n. 2
0
 def index(self):
     return render('index.genshi', extra_vars=dict(error=None))