我正在使用 TeX 宏包 Context 生成 pdf。Context 源文件使用 Django 模板生成,内容使用 Pandoc 从 HTML(存储在数据库中)转换为 Context 的语法。由于 Pandoc 没有原生 python 绑定,我创建了以下模板过滤器来将 HTML 转换为上下文:
def html2context(value):
"""
Runs pandoc to convert from HTML to Context.
Syntax::
{{ value|html2context }}
"""
cmd = 'pandoc -f html -t context'
p1 = subprocess.Popen(cmd.split(" "), stdout=subprocess.PIPE, stdin=subprocess.PIPE)
(stdout, stderr) = p1.communicate(input=value.encode('utf-8'))
return mark_safe(stdout)
问题是,为了生成我的 pdf,我多次调用模板过滤器,以非常缓慢的转换过程结束。我必须多次调用过滤器的原因是因为我的模板混合了来自数据库的内容和原始 Context 命令来构建我的文档:HTML 没有涵盖我在 Context 中需要的所有可能性。我的模板的一个最小示例如下所示:
{% for plugin in intro %}
{{ plugin.text.body|html2context }}
\page[emptyodd]
{% endfor %}
您知道如何使转换过程不那么理想吗?
谢谢