尝试从Reportlab解决方案。
下载并像往常一样使用python setup.py install安装
你还需要安装以下模块:具有easy_install的xhtml2pdf,html5lib,pypdf。
这是一个用法示例:
首先定义此功能:
import cStringIO as StringIOfrom xhtml2pdf import pisafrom django.template.loader import get_templatefrom django.template import Contextfrom django.http import HttpResponsefrom cgi import escapedef render_to_pdf(template_src, context_dict): template = get_template(template_src) context = Context(context_dict) html = template.render(context) result = StringIO.StringIO() pdf = pisa.pisadocument(StringIO.StringIO(html.enpre("ISO-8859-1")), result) if not pdf.err: return HttpResponse(result.getvalue(), content_type='application/pdf') return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
然后,你可以像这样使用它:
def myview(request): #Retrieve data or whatever you need return render_to_pdf( 'mytemplate.html', { 'pagesize':'A4', 'mylist': results, } )
模板:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>My Title</title> <style type="text/css"> @page { size: {{ pagesize }}; margin: 1cm; @frame footer { -pdf-frame-content: footerContent; bottom: 0cm; margin-left: 9cm; margin-right: 9cm; height: 1cm; } } </style> </head> <body> <div> {% for item in mylist %} RENDER MY ConTENT {% endfor %} </div> <div id="footerContent"> {%block page_foot%} Page <pdf:pagenumber> {%endblock%} </div> </body></html>
希望能帮助到你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)