使用Python/Flas将html转换为pdf

2024-05-16 10:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python+Flask从html生成pdf文件。为此,我使用xhtml2pdf。这是我的代码:

def main():
    pdf = StringIO()
    pdf = create_pdf(render_template('cvTemplate.html', user=user))
    pdf_out = pdf.getvalue()
    response = make_response(pdf_out)
    return response

def create_pdf(pdf_data):
    pdf = StringIO()
    pisa.CreatePDF(StringIO(pdf_data.encode('utf-8')), pdf)
    return pdf

在此代码文件中正在动态生成。但是!xhtml2pdf在CSS中不支持许多样式,因为正确标记页面有一个大问题。我发现了另一种乐器(wkhtmltopf)。但当我写下这样的话:

pdf = StringIO()
data = render_template('cvTemplate1.html', user=user)
WKhtmlToPdf(data.encode('utf-8'), pdf)
return pdf

引发错误:

AttributeError: 'cStringIO.StringO' object has no attribute 'rfind'

我的问题是如何在Flask中使用wkhtmltopdf(动态生成文件)将html转换为pdf?

提前谢谢你的回答。


Tags: 文件代码flaskdatareturnpdfresponsedef
3条回答

页面需要渲染,可以使用pdfkit:

https://pypi.python.org/pypi/pdfkit

https://github.com/JazzCore/python-pdfkit

文档中的示例。

import pdfkit

pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')  # Is your requirement?

Conversion in 3 Steps from Webpage/HTML to PDF

第1步:下载库pdfkit

$ pip install pdfkit

第2步:下载wkhtmltoppdf

对于Ubuntu/Debian:

sudo apt-get install wkhtmltopdf

对于Windows:

(a)下载链接:WKHTMLTOPDF

(b)Set:在环境变量中设置路径变量Set binary folder。

第3步:要下载的Python代码:

(i)已保存的HTML页面

import pdfkit
pdfkit.from_file('test.html', 'out.pdf')

(二)按网址转换

import pdfkit
pdfkit.from_url('https://www.google.co.in/','shaurya.pdf')

(iii)以PDF格式存储文本

import pdfkit
pdfkit.from_string('Shaurya Stackoverflow','SOF.pdf')

你试过使用WeasyPrintFlask-WeasyPrint吗?他们的网站上有很好的例子,所以我不在这里复制它们。

相关问题 更多 >