Я создаю PDF-файлы, используя пакет макросов TeX Context. Исходный файл Context создается с использованием шаблонов Django, а содержимое преобразуется из HTML (сохраненного в базе данных) в синтаксис Context с использованием Pandoc. Поскольку для 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-файла я много раз вызывал фильтр шаблонов, что заканчивалось очень медленным процессом преобразования. Причина, по которой мне приходится много раз вызывать фильтр, заключается в том, что мой шаблон смешивает содержимое из базы данных и необработанные команды контекста для структурирования моего документа: HTML не охватывает все возможности, которые мне нужны в контексте. Минимальный пример моего шаблона выглядит так:
{% for plugin in intro %}
{{ plugin.text.body|html2context }}
\page[emptyodd]
{% endfor %}
У вас есть идеи, как я могу сделать процесс преобразования менее оптимальным?
Спасибо