如何使用Django将HTML页面转换为PDF

8 投票
1 回答
11419 浏览
提问于 2025-04-18 07:07

我有一个用Django做的网页应用,它是一个用来存储账单和发票的平台。现在我想把这些账单导出成PDF格式。

我正在使用xhtml2pdf这个工具,但它没有正常工作。

我用这个代码来测试:http://obroll.com/generate-pdf-with-xhtml2pdf-pisa-in-django-examples/

它没有报错,但就是生成不了PDF文件。

1 个回答

17

试试这个代码。对我来说是有效的。把“template_testing.html”换成你的模板,然后把你的数据放到“data = {}”里去渲染。

views.py:

import os
from django.conf import settings
from django.http import HttpResponse
from django.template import Context
from django.template.loader import get_template
import datetime
from xhtml2pdf import pisa 


def generate_PDF(request):
    data = {}

    template = get_template('template_testing.html')
    html  = template.render(Context(data))

    file = open('test.pdf', "w+b")
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file,
            encoding='utf-8')

    file.seek(0)
    pdf = file.read()
    file.close()            
    return HttpResponse(pdf, 'application/pdf')

撰写回答