2014-02-16 154 views
1

我試圖在我的網站上使用Django將html轉換爲pdf。 我試圖使用wkhtmltopdf和比薩(和一些使用它們的django模塊),但我總是有與CSS和靜態文件相同的問題。Django呈現嵌套模板爲pdf

我有一個基地佈局,看起來像這樣:

{% load staticfiles %} 
{% load bootstrap3 %} 
<!DOCTYPE html> 
<html lang="fr"> 
    <head> 
     <!-- ... --> 
     {% block css %} 
      {% bootstrap_css %} 
      <link rel="stylesheet" type="text/css" href="{% static 'website/css/style.css' %}" /> 
     {% endblock css %} 
    </head> 
    <body> 
     <!-- ... --> 
     <div class="container" id="main-container"> 
      <div id="page-content">{% block content %}{% endblock content %}</div> 
     </div> 
    </body> 
</html> 

擴展基地佈局和另一個佈局包括我的簡歷:

{% extends "website/base.html" %} 
<!-- ... --> 
{% block content %} 
    <!-- ... --> 
    {% include "website/cv.html" %} 
{% endblock content %} 

我的簡歷:

{% load staticfiles %} 
<link rel="stylesheet" type="text/css" href="{% static 'website/css/cv.css' %}" /> 
<div id="cv"> 
    <!-- ... --> 
    <img src="{% static 'website/img/me.jpg' %}" class="img-rounded"> 
    <!-- ... --> 
</div> 

我想把我的簡歷呈現給pdf,問題是它使用bootstrap_css ans靜態文件(一個css文件和一張圖片),它們不會被渲染。

我檢查了一些類似的主題,但他們把所有的CSS放在HTML中,這在我的情況下並不是很好。即使我通過將所有CSS放入簡歷中嘗試此解決方案,{%bootstrap_css%}塊也不起作用。

有什麼辦法可以使它工作嗎?我可以使用任何與django或linux協同工作的庫/模塊。

感謝

+0

這是一個有趣的問題,我想知道現在是否有人有更好的答案... – jpaugh

回答

0

我會感到驚訝,如果你能找到HTMLPDF之間的100%映射!特別是喜歡引導的花式「新鮮」東西。 (在文字處理器格式之間轉換已經很困難了!)

但是,如果您有一個特殊的在線CSS腳本,該腳本僅用於PDF呈現?你可以使用mediatype屬性來控制它嗎?我想知道...

免責聲明:我從來沒有說服Django做我想做的。因人而異。

+0

謝謝。我試圖把所有的CSS(引導程序和我自己的CSS)直接放在標記中,並直接將它傳遞給wkhtmltopdf二進制文件。它工作得很好,除了自舉網格系統。 我認爲我可以使用print mediatype(wkhtmltopdf可以處理它)來爲我的目的做一些看起來像引導程序的網格,但是因爲我不能使用Django模板標記,所以我必須複製我所有用於pdf渲染的CSS,而且我不太喜歡這個想法。 – Romain

+0

Django並不是完美主義者 - 「這是完美主義者的最後期限」:-)至少,這是我在2011年的印象。 – jpaugh