es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo utilizar ‘pdfkit’ en Django?

Quiero generar un pdf en mi proyecto de Django. Utilizo el módulo pdfkit para convertir una página html en un archivo pdf. Utilizo esta función, pero me aparecen errores, como:

OSError
Valor de excepción:
No se encontró el ejecutable wkhtmltopdf: “b””
Si existe este archivo, compruebe que este proceso pueda leerlo o que pueda pasar la ruta manualmente en la llamada del método, compruebe el archivo README. De lo contrario, instale wkhtmltopdf – https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

  def customer_render_pdf_view(request, *args, **kwargs):
     pk = kwargs.get('pk')
     customer = get_object_or_404(Person, pk=pk)
     enrolment = get_object_or_404(Enrollment,pk=pk)  
     template_path = 'test.html'
     context = {'customer': customer, 'enrolment':enrolment}    
     template = get_template(template_path)
     html = template.render(context)    
     pdf = pdfkit.from_string(html, False)
     response = HttpResponse(pdf, content_type='application/pdf' )
     response['Content-Disposition'] = 'filename= "report.pdf"'
     return response
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para generar un PDF en un proyecto Django usando pdfkit, se puede utilizar el método from_string para convertir una página HTML en un archivo PDF. Sin embargo, si se encuentra un OSError con el mensaje “No se encontró el ejecutable wkhtmltopdf: ‘b'”, significa que el ejecutable wkhtmltopdf no está en su sistema. Para solucionar este error, se puede instalar wkhtmltopdf siguiendo las instrucciones en la página wiki oficial de pdfkit (https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf).

    Una vez que se ha instalado wkhtmltopdf, se puede utilizar la función custom_render_pdf_view proporcionada en el código de ejemplo para renderizar el PDF. Esta función toma un argumento de clave principal (pk) y lo utiliza para recuperar objetos de la base de datos. Luego, establece la ruta de la plantilla en “test.html” y renderiza la plantilla HTML con el contexto proporcionado. Finalmente, convierte el HTML renderizado en un PDF usando pdfkit y devuelve una respuesta HTTP con el archivo PDF y un nombre de archivo de “report.pdf”.

    Tenga en cuenta que es posible que deba ajustar el código para que coincida con su caso de uso y estructura de plantilla específicos, pero este ejemplo proporciona un buen punto de partida para generar PDF en Django con pdfkit.

Comments are closed.