python - español - xhtml2pdf django
Convierta html a pdf usando Python/Flask (2)
¿Has probado con Flask-WeasyPrint , que usa WeasyPrint ? Hay buenos ejemplos en sus sitios web, así que no los replico aquí.
Quiero generar un archivo pdf desde html usando Python + Flask. Para hacer esto, uso xhtml2pdf. Aquí está mi código:
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
En este código, el archivo se genera sobre la marcha. ¡PERO! xhtml2pdf no es compatible con muchos estilos en CSS, debido a este gran problema para marcar la página correctamente. Encontré otro instrumento (wkhtmltopdf). Pero cuando escribí algo como:
pdf = StringIO()
data = render_template(''cvTemplate1.html'', user=user)
WKhtmlToPdf(data.encode(''utf-8''), pdf)
return pdf
Se produjo error:
AttributeError: ''cStringIO.StringO'' object has no attribute ''rfind''
Y mi pregunta es cómo convertir html a pdf utilizando wkhtmltopdf (con generación de archivos sobre la marcha) en Flask?
Gracias de antemano por sus respuestas.
La página necesita render, puedes usar pdfkit:
https://pypi.python.org/pypi/pdfkit
https://github.com/JazzCore/python-pdfkit
Ejemplo en el documento.
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?