0

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',
    ]

[開く/名前を付けて保存] ダイアログ ボックスが自動的にポップアップするようにしたいと思います。

4

1 に答える 1

0

のコードを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'
于 2019-01-25T08:11:41.913 に答える