2013-11-25 87 views
5

我想使用Latex來使用我的Django模板創建PDF文件。Django模板和乳膠

但是,當它生成PDF文件時,某些字符沒有以良好的方式編碼,尤其是'(撇號):Latex停止編譯,如果忽略錯誤,則輸出爲&#39。我是法國人,所以我的Python文件是UTF-8,我的數據庫是UTF8-general-CI,我使用那些Latex包:[utf8] {inputenc} [T1] {fontenc} [francais] { babel} {lmodern}

所有法國口音都會生成,所以我不知道問題在哪裏?

有什麼想法?

這是我的觀點:

# -*- coding: utf-8 -*- 
... 
def results_contact(request, checkup_id): 
    ... 
    title = get_object_or_404(Checkup, pk=checkup_id).name 
    ... 

    template_file = 'activities/results.tex' 

    t = loader.get_template(template_file) 
    context = Context({ 
       ... 
       "title": title, 
       ... 
       }) 

    ... 
    f.write(smart_str(t.render(context))) 
    ... 
    return HttpResponseRedirect('/download_file/upload/checkups/%s.pdf' % basename) 

而且我的模板:

\documentclass[11pt]{lettre} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[francais]{babel} 
\usepackage{lmodern} 
... 

\begin{document} 
\begin{letter}{...} 
\name{My name} 
\address{My address} 
\lieu{My city} 
... 
\conc{ {{ title }} } %here is my variable 
... 
\end{letter} 
\end{document} 

例如,如果標題=介紹瀏覽D'亞當,輸出將是

Objet公司: Visite d &#39Adam

這裏是日誌:

! Misplaced alignment tab character &. 
<argument> Visite d& 
         ##39;embauche 
l.35 \conc{ Visite d&#39;Adam } 
? 

回答

8

這是automatic HTML escaping結果。由於您不生成HTML,您可以turn this feature off

{% autoescape off %} 
    \documentclass[11pt]{lettre} 
    \usepackage[utf8]{inputenc} 
    \usepackage[T1]{fontenc} 
    \usepackage[francais]{babel} 
    \usepackage{lmodern} 
    ... 

    \begin{document} 
     \begin{letter}{...} 
      \name{My name} 
      \address{My address} 
      \lieu{My city} 
      ... 
      \conc{ {{ title }} } 
     ... 
     \end{letter} 
    \end{document} 
{% endautoescape %} 
+0

在10分鐘內回答...它的工作原理!謝謝@路德維克。 – lebastidien09