2013-06-26 62 views
2

因此,我試圖將網站的一部分導出爲PDF,並且我能夠正確輸出HTML數據,但CSS代碼只是在PDF中顯示爲文本。無法在Django中呈現Css數據?

> 

def exportPDf(results, css, html): 
>   
>   result = StringIO.StringIO() 
>   
>   results_2 = StringIO.StringIO(results.encode("UTF-8")) 
>   css_encode = StringIO.StringIO(css.encode("UTF-8")) 
>   
>   pdf = pisa.pisaDocument(results_2 , result)#ISO-8859-1 
>   
>   if not pdf.err: 
>    return HttpResponse(result.getvalue(), mimetype='application/pdf') 
>   return HttpResponse('We had some errors<pre>%s</pre>' % escape(html)) 
>   
>  def get_data(request): 
>   results = request.GET['css'] + request.GET['html'] 
>   html = request.GET['html'] 
>   css = request.GET['css'] 
>   return ExportPDf(results, css, html) 

再次,HTML是好的。 IT只是不呈現的CSS部分。它將實際的CSS代碼輸出爲PDF。

+1

發佈代碼的相關部分將有助於他人回答此問題。 – Totoro

回答

0

如果你已經設置你的CSS這樣:

<style type="text/css"> 
    body { 
     color:#fff; 
    } 
</style> 

嘗試以評論包裹你的CSS:

<style type="text/css"> 
<!-- 
    body { 
     color:#fff; 
    } 
--> 
</style> 

這將迫使CSS作爲註釋,因此將不會渲染。由於我看不到你的代碼是如何呈現的,這只是一個猜測,但讓我知道它是否確實工作:)

+0

我得到你想告訴我的,但那不是我想要的。當我導出爲PDF時,CSS會以文字形式輸出。就像h1 {background:purple;} etc ......當HTML代碼被讀取並「執行」時。我希望CSS也能「執行」。我不確定我是否正確地解釋自己=/lol。 – bob

+0

hmmmmm對不起,我錯過了!我剛剛從Django Project和ReportLab(製作PDF庫的人)那裏獲得了一些文檔,看起來他們實際上並沒有解析CSS並使用它來渲染頁面(似乎他們有自己的方法,將只使用html以外的屬性,而不是像valign,width等樣式)。但是,我確實找到了一個python庫,在這裏http://www.xhtml2pdf.com/看起來很有希望。希望有所幫助! –