Example #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
Example #2
0
File: core.py Project: taky/texcore
    def typeset(self, manuscript, params=None):
        if params is None:
            params = dict()

        p = glue.fork_proc(**params)
        try:
            encoding = params.get('encoding', 'UTF-8')
            (stream, error) = p.communicate(Manuscript(manuscript.data, encoding=encoding).__str__())
        except UnicodeDecodeError, e:
            return xmlrpclib.Fault(8000, u'Cannot decode input stream as %s' % encoding)