繁体   English   中英

从用 LaTex 编写的 str 行列表,如何在 Python 中生成 pdf?

[英]From a str list of lines written in LaTex, how to generate a pdf in Python?

我有一个字符串列表,其中每个元素都是一行 LaTex。

使用flask,如何生成要在请求时返回的pdf?

例如:

document = []

def add( toAdd ):
    global document
    document.append( toAdd )

def begin(item):
    return "\\begin{"+str(item)+"}"

def end(item):
    return "\\end{"+str(item)+"}"

@route('/pdf')
def populate_document( protocol, document ):
    TITLE = "title"
    AUTHOR = "author"
    HEADER = "\\documentclass[12pt]{article}"
    ENUMERATE = "enumerate"
    DOCUMENT = "document"
    STEPS = "steps"

    steps = protocol[STEPS]

    # KEEP AT TOP
    add( HEADER )
    # KEEP AT TOP

    add( cmd( TITLE, protocol[TITLE] ) )
    add( cmd( AUTHOR, protocol[AUTHOR] ) )
    add( begin( DOCUMENT ) )
    add( cmd( "section*", protocol[TITLE] ) )


    add( end( ENUMERATE ) )
    add( end( DOCUMENT ) )

    ### HOW TO COMPILE `document` and RETURN AS PDF?

如果需要,我很乐意进一步澄清。

提前致谢。

完成这项工作的关键包是latex 有了它,你可以做这样的事情(从一个工作演示中提取):

from flask import Flask
from jinja2 import FileSystemLoader
from latex import build_pdf
from latex.jinja2 import make_env

app = Flask(__name__)
env = make_env(loader=FileSystemLoader('templates'))

@app.route('/')
def home():
    latex_template = env.get_template('example.latex')
    pdf = build_pdf(template.render(text='Hello World'))
    return bytes(pdf), 200, {
        'Content-Type': 'application/pdf',
        'Content-Disposition': 'inline; filename="example.pdf"'}

其中example.latex来自templates文件夹。 将此转换为从字符串中获取 LaTex 留作练习。

这可以作为小文件的概念验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM