Позвоните в LaTeX из Python Django - PullRequest
0 голосов
/ 27 марта 2019

В django я использую jinja2 для рендеринга шаблона в файл .tex. Затем мне нужно вызвать 'xelatex' для этого файла .tex и сохранить вывод как объект File django.

Я дошел до этого:

tex_file = render_to_string("foo.tex", context)

Если я сохраню tex_file в файл и запустлю xelatex, я получу ожидаемый результат, так что он будет работать до этого момента.

Затем я попробовал что-то вроде этого:

subprocess.run(["xelatex", tex_file], capture_output=True])

Проблема в том, что я на самом деле не хочу записывать вывод xelatex в STDOUT. Я хочу захватить файл output.pdf, который он генерирует.

Я знаю, что я мог бы просто сохранить xelatex этот файл в / tmp /, а затем открыть его и обработать с помощью python, но это кажется медленным и грязным. Есть ли способ заставить подпроцесс на самом деле вернуть вывод:

output = subprocess.run(["xelatex", tex_file], capture_output=True])
self.file = file
...