Django:生成PDF

时间:2018-04-19 13:04:12

标签: django pdf-generation

我目前正在使用Django构建一个票务页面。我现在必须找到最好的方式'生成PDF票证,买家可以从我们的服务器下载哪些票证。

我在官方文档中研究了不同的方式和应用程序,包括ReportLab。机票将包含个人信息,我还计划在机票上加入条形码/二维码。我正在努力解决的问题是,哪些可用的应用程序是我最好的选择。从我的第一个理解,ReportLab可能不是最好的解决方案,我可能会更好地从HTML页面生成票证。

在我现在深入挖掘文档之前,我想问你们,如果你对我的目标有一些经验并且可以给我一些建议吗?

2 个答案:

答案 0 :(得分:0)

在我的情况下,我使用了wkhtmltopdfpdfkit

阅读:https://learnbatta.com/blog/django-html-to-pdf-using-pdfkit-and-wkhtmltopdf-5/

答案 1 :(得分:0)

如果你想从HTML页面生成pdf,我建议你使用PhantomJS。

使用PhantomJS在子进程中打开URL并直接输出到STDOUT:

import subprocess

proc = subprocess.Popen(
    ['phantomjs', 'rasterize.js', url, '/dev/stdout'],
    stdout=subprocess.PIPE
)

然后从STDOUT输出创建pdf:

import io
from PIL import Image
from tempfile import TemporaryFile


with TemporaryFile() as temp_pdf:
    img = Image.open(io.BytesIO(proc.stdout.read()))
    if img.mode == 'RGBA':
        img = img.convert('RGB')
    img.save(temp_pdf, "PDF", quality=100)