django 使用wkhtmltopdf Python将HTML转换为PDF

sq1bmfud  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(103)

我正在将HTML转换为PDF。PDF下载成功,但它返回空白的PDF页面不显示任何转换的内容。在我HTML文件中有Shopify CSS链接。如果转换最小内容HTML文件,则转换正确
from django.shortcuts import render from django.http import HttpResponse import pdfkit from django.conf import settings
def convert_html_to_pdf(request):方法== 'POST':rendered_template = render(request,'newundergrace.html')HTML file

options = {
        'enable-local-file-access': '',
        'orientation': 'landscape',
        'page-size': 'Letter',
        'page-size': 'A4',
        'margin-top': '0',
        'margin-right': '0',
        'margin-bottom': '0',
        'margin-left': '0',
        'dpi': 96,
    }

    rendered_content = rendered_template.content.decode('utf-8')

    pdf = pdfkit.from_string(rendered_content, False, options=options)  

    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=output.pdf'
    response.write(pdf)
    return response

return render(request, 'index1.html')

字符串

niwlg2el

niwlg2el1#

为Django配置比萨不应该是too hard
网上有几个例子向你展示了如何做到这一点,并解释了如何在你的模板中链接到外部资源:
http://www.arnebrodowski.de/blog/501-Pisa-and-Reportlab-pitfalls.html django -比萨:将图像添加到PDF输出http://antydba.blogspot.com/2009/12/django-pisa-polskie-czcionki.htmlhttp://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html

options = {
    'page-size': 'A4',
    'margin-top': '0mm',
    'margin-right': '0mm',
    'margin-bottom': '0mm',
    'margin-left': '0mm',
    'encoding': 'UTF-8'
}

pdfkit.from_file('input.html', 'output.pdf', options=options)

字符串
确保将'input.html'替换为HTML文件的路径,将'output.pdf'替换为生成PDF文件的所需路径。
注意:确保wkhtmltopdf可执行文件位于系统的PATH中,或者使用pdfkit的配置参数显式提供其路径。

iecba09b

iecba09b2#

我尝试了pdfkit,html 2 pdf和htmltopdf,但我无法将html转换为pdf。我发现weasyprint模块它为我工作。
它需要weasyprint来安装。安装可以从这里下载。HTML and CSS that can export to PDF.

安装所需模块/包

pip install weasyprint

字符串

导入所需模块

from weasyprint import HTML
HTML("c:/xyz/out_case.html").write_pdf("c:/xyz/sample_out.pdf")

相关问题