7

weasyprintによって生成されたpdfファイルを、たとえば " my_project/pdf_files/ "フォルダーなど、指定したフォルダーにする必要があります。

注: プロジェクトに django フレームワークを使用しています。そして、これがプロジェクトの構造です。

my_project/

----pdf_generator_app/

--------admin.py

--------models.py

--------views.py

pdf_files/

現在、views.pyにこれがあります

def generate(student_id):
    student = get_object_or_404(Student, application_id=student_id)
    html = render_to_string('contract.html', {'student': student})
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="some_file.pdf"'
    weasyprint.HTML(string=html).write_pdf('myfile.pdf', 
                                           presentational_hints=True,
                                           stylesheets=[weasyprint.CSS(settings.STATIC_ROOT + '/css/styles.css')])
    return response

ただし、このビューはpdfファイルをディレクトリに保存しません。ブラウザにファイルを表示するだけです。ディレクトリmy_project/pdf_files/にファイルを保存する必要があります

4

3 に答える 3

3

出力をバイナリモードに書き込んだところ、うまくいきました。

dirname = os.path.dirname(__file__)


def hello_pdf():
    # Make a PDF straight from HTML in a string.
    html = render_template('template-1.html', name=name)

    pdf = HTML(string=html).write_pdf()

    if os.path.exists(dirname):

        f = open(os.path.join(dirname, 'mypdf.pdf'), 'wb')
        f.write(pdf)
于 2017-08-06T07:36:39.580 に答える
1

私とは反対に、PDF ファイルを取得しましたが、ブラウザーで表示できませんでした。「myfile.pdf」を絶対パスに置き換えて、pdf ファイルが生成されるかどうかを確認します。私の状態ではうまくいきます。

于 2017-06-02T07:50:18.397 に答える