Python3 Django->;HTML到PDF
在python2中,从django网页生成PDF有很多不同的方法。最干净的可能是pisa和reportlab。 但这些不适用于python3 到目前为止,我唯一成功使用的方法是呈现模板,将其写入文件,然后通过subprocess.popen使用wkhtmltopdf。这工作正常,但它不会加载我的任何静态文件,如css和图像 有什么合适的解决办法吗?wkhtmltopdf可以通过某种方式从命令行读取我的静态文件吗?或者是否有一个像pisa/reportlab这样的库,它支持python3 我还没有找到这样一个你可以使用的图书馆。您可以轻松地直接渲染 你可以这样做:Python3 Django->;HTML到PDF,python,django,pdf,html-to-pdf,Python,Django,Pdf,Html To Pdf,在python2中,从django网页生成PDF有很多不同的方法。最干净的可能是pisa和reportlab。 但这些不适用于python3 到目前为止,我唯一成功使用的方法是呈现模板,将其写入文件,然后通过subprocess.popen使用wkhtmltopdf。这工作正常,但它不会加载我的任何静态文件,如css和图像 有什么合适的解决办法吗?wkhtmltopdf可以通过某种方式从命令行读取我的静态文件吗?或者是否有一个像pisa/reportlab这样的库,它支持python3 我还没有
html = HTML(string=htmlstring)
main_doc = html.render()
pdf = main_doc.write_pdf()
return HttpResponse(pdf, content_type='application/pdf')
要将Django视图呈现为HTML,只需使用快捷方式render_To_string(self.template_name,context,context_instance=RequestContext(self.request))
请注意,在同步Webserver/WSGI服务器上使用此选项时,在呈现PDF之前,所有请求都将被阻止。因此考虑使用异步工作器。WKHTMLTPPDF需要
- CSS将被内联
- 服务器上本地存在的静态文件
- 静态文件URL是操作系统路径,例如:
/home/ubuntu/project/project/static/file\u name
pip install --pre xhtml2pdf
如果已经安装了这两个模板,则可以直接使用xhtml2pdf,也可以安装软件包,该软件包提供一个要继承的TemplateView和一个示例基本模板&样式,让您快速入门。按照他们的快速入门说明,您可以快速准备一些细节视图,以呈现为PDF格式,如:
class InvoicePDFView(PDFTemplateView):
template_name = "invoice_pdf.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
myinstance = get_object_or_404(MyModel, pk=context['pk'])
context['myinstance'] = myinstance
return context
在您的url.py中,您可以添加如下内容:
url(r'invoice/(?P<pk>[^/]+)/$', InvoicePDFView.as_view(), name='invoice')
url(r'invoice/(?P[^/]+)/$”,InvoicePDFView.as_view(),name='invoice')
我试过Python3,效果很好
pip install python-pdf
对于python2
使用pip安装python pdf==0.30.0
文档谢谢您!它没有出现在我的任何搜索中,但它工作得非常完美。安装它花了一点力气,因为它需要一些非python库,但我成功了。感谢bunchI尝试使用Weasyprint,它与Python3一起工作,但它消耗了大量内存——从不到1M的html生成PDF需要5亿。