我试图从django latex模板生成pdf。为此,我使用了here中的代码:
所以我在 views.py
中有这段代码context = {....}
template = get_template('my_latex_template.tex')
rendered_tpl = template.render(context).encode('utf-8')
with tempfile.TemporaryDirectory() as tempdir:
for ppp in range(2):
process = Popen(
['pdflatex', '-output-directory', tempdir],
stdin=PIPE,
stdout=PIPE,
stderr=PIPE,
)
process.communicate(rendered_tpl)
with open(os.path.join(tempdir, 'texput.pdf'), 'rb') as f:
pdf = f.read()
r = HttpResponse(content_type='application/pdf')
r.write(pdf)
这是 my_latex_template.tex
{% autoescape on %}
\documentclass[a4paper,12pt]{article}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{graphicx}
\begin{document}
blabla
\includegraphics{img.png}
\end{document}
{% endautoescape %}
我的目录结构:
myapp
|..templates
|..|..my_latex_template.tex
|..|..img.png
|..views.py
...
在没有\ includegraphics {img.png}的情况下编译这个乳胶模板时,一切都很完美。 在使用图像进行编译时,我收到错误
[Errno 2]没有这样的文件或目录:' /var/folders/73/r8hl47ld11l68v_1kjh_m61m0000gn/T/tmprfp7wf_x/texput.pdf'
这基本上意味着通过在渲染模板上运行pdflatex来正确生成此临时文件...
有趣的是,当我在 my_latex_template.tex
中进行关注时{% autoescape on %}
\documentclass[a4paper,12pt]{article}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{graphicx}
\begin{document}
blabla
{% endautoescape %}
\includegraphics{img.png}
{% autoescape on %}
\end{document}
{% endautoescape %}
代码编译正确,我得到的是pdf,但不是图片I'm getting this - 图片没有正确显示
您对我能做什么有什么想法吗?如果有人可以帮助我,我将非常感激。
谢谢