python - 从用 LaTex 编写的 str 行列表中,如何在 Python 中生成 pdf?
问题描述
我有一个字符串列表,其中每个元素都是一行 LaTex。
使用烧瓶,如何生成要在请求中返回的 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 留作练习。
这可以作为小文件的概念验证。
推荐阅读
- json - Newtonsoft.Json.Schema 未针对 JSON 模式正确验证 JSON 输入
- html - Material sidenav 导致 translate 和 flex css 属性出现问题
- ibm-midrange - 如何在记事本电脑上使用 as400 模拟器 tn5250 进行向上/向下翻页
- javascript - 创建后将数组中的字段数据添加到嵌入
- javascript - ReactJS - 使用来自 Firebase 的数据进行渲染重定向 - “渲染没有返回任何内容”
- javascript - 为什么在HTML中输出计时器时会输出Nan
- spring-batch - @OnWriteError 方法不更新数据库记录状态
- asp.net-core - Hangfire Recurring 作业每 30 分钟运行一次,但仍未完成
- swift - 如何在 SpriteKit 中通过其名称获取节点?
- r - R中的integrate()函数为涉及for循环的被积函数提供错误