将 Django 模板转换为 pdf

Vik*_*thy 0 javascript python pdf django

我的应用程序需要将报告邮寄给客户,因此我需要一种有效的方法将动态模板转换为 pdf 报告(包括通过 chart.js 生成的图像)​​。我尝试过 pdfkit,但它需要一个 URL(它很可能会在该 URL 上执行 GET,但是模板会在几次 AJAX 调用后生成报告,因此 GET 将只返回带有一些过滤器的普通页面)并且它不包括图像(我猜我可以通过使用 dataToURL 将图表图像转换为 png 并保存在服务器上来解决)。

我在这里看到的唯一选择是保存动态生成的所有数据以及 html 标签,然后在服务器上重新创建文件,然后转换为 pdf。我相信有更好的解决方案。抱歉,如果这看起来很基本,但我的职业不是程序员。

Ian*_*ice 5

Django 有几个输出 PDF 的选项,其中最灵活的是ReportLab

然而,在传递上下文数据的同时将 Django 模板渲染为 PDF,Weasyprint / xhtml2pdf非常简单。下面是一个使用早期 xhtml2pdf 库的示例。这是一个标准的 Django 视图。

需要明确的是,所有这些库都采用一个 Django 模板,渲染它,然后返回一个 PDF。有一些限制(例如,Pisa 只有少数可以渲染的 CSS 参数)。无论如何,看看这三个;至少有一个会完全满足您的需求。

from django_xhtml2pdf.utils import generate_pdf

def myview(request):
    resp = HttpResponse(content_type='application/pdf')
    dynamic_variable = request.user.some_special_something
    context = {'some_context_variable':dynamic_variable}
    result = generate_pdf('my_template.html', file_object=resp, context=context)
    return result
Run Code Online (Sandbox Code Playgroud)

  • 当然,伊恩..没有足够的回购来投票,但我在你的回答中打了“勾”标记..我希望这意味着我接受这个作为答案! (2认同)