Django乳胶模板与图像

时间:2017-04-25 14:47:29

标签: python django pdf django-templates latex

我试图从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 - 图片没有正确显示

您对我能做什么有什么想法吗?如果有人可以帮助我,我将非常感激。

谢谢

0 个答案:

没有答案