2013-06-04 45 views
0
def preview_pdf(request, did): 
    d_instance = get_object_or_404(MyObject, pk=did, user=request.user) 
    #resp = HttpResponse(content_type='application/pdf') 
    result = generate_pdf('pdf_preview.html') 

    return render_to_response('pdf_preview.html', {'objects': d_instance,'result':result}, RequestContext(request)) 

pdf_preview.html:Django的xhtml2pdf - 生成PDF(編解碼器不能解碼字節)

{{result}} 

<iframe src="http://docs.google.com/viewer?url={{result}}.pdf&embedded=true" width="600" height="780" style="border: none;"></iframe> 

{{objects.name}} 

,但不顯示該文檔。

{{result}}顯示,如:<StringIO.StringIO instance at 0xb4da030c>

+0

您是否需要將'HttpResponse'對象傳遞給'generate_pdf'函數? –

+0

@PauloBu我需要在iframe中顯示我生成的pdf。 '{{result}}'看起來像'' – user2426362

+0

而你正在將'pdf_preview.html'轉換爲pdf我是對嗎?你可以發佈「pdf_preview.html」的內容嗎? –

回答

2

我想你需要設置編解碼器參數,對於PDF 編碼內容您需要的東西是這樣的:

from xhtml2pdf import pisa 
from django.template.loader import render_to_string 
from datetime import datetime 
import StringIO 

def pdf_report(request, did): 
    d_instance = get_object_or_404(MyObject, pk=did, user=request.user) 

    contents = render_to_string('pdf_preview.html', {'object':d_instance}) 
    response = HttpResponse(mimetype='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename=answer_%s.pdf' % (f_date,) 
    result = StringIO.StringIO() 
    pdf = pisa.pisaDocument(StringIO.StringIO(contents.encode('utf-8')), result, show_error_as_pdf=True, encoding='UTF-8') 
    if not pdf.err: 
     response.write(result.getvalue()) 
     result.close() 
     return response 

而且你可以用另一種加載此創建的文檔幀。

+0

如何加載?通過此視圖的網址? '