使用django_weasyprint
(基于类的视图实现)包来生成pdf。
我能够在浏览器中生成pdf,但无法设置打开/另存为对话框弹出功能。我知道我必须将content-disposition设置为等于附件(我认为),但是我为此很努力。
from django.conf import settings
from django.views.generic import DetailView
from django_weasyprint import WeasyTemplateResponseMixin
class ArticleView(DetailView):
# vanilla Django DetailView
model = Article
template_name = 'article_detail.html'
class ArticlePrintView(WeasyTemplateResponseMixin, ArticleView):
# output of DetailView rendered as PDF
pdf_stylesheets = [
settings.STATIC_ROOT + 'css/app.css',
]
我想使“打开/另存为”对话框自动弹出。
答案 0 :(得分:0)
看看code for the WeasyTemplateResponseMixin
-有一个选项可以在类上设置pdf_filename
,如果您这样做了,那么Content-Disposition
标头将使用此文件名设置,以便浏览器打开文件的下载/保存对话框。像这样:
Class ArticlePrintView(WeasyTemplateResponseMixin,ArticleView):
pdf_filename = 'my-pdf.pdf'
如果您需要动态确定文件名,则可以覆盖get_pdf_filename
方法来做到这一点:
def get_pdf_filename(self):
return 'some-file.pdf'