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
def index(self): return render('index.genshi', extra_vars=dict(error=None))