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.

Django Reportlab getKeepWithNext Obtener manténConSiguiente en Django Reportlab

Estoy tratando de agregar una imagen a un PDF generado en Reportlab. Estoy intentando acceder a la imagen desde un campo de Django, especificando la ruta completa del archivo.

Cuando ejecuto el código siguiente, obtengo el siguiente error: “Valor de excepción: getKeepWithNext”.

Cualquier ayuda sobre lo que estoy haciendo mal sería muy apreciada.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que el error “Valor de la excepción: getKeepWithNext” no esté relacionado con el bloque de código proporcionado. Sin embargo, en relación al bloque de código proporcionado, parece que se está accediendo correctamente al camino de la imagen desde el campo de Django.

    Una sugerencia sería asegurarse de que el camino de la imagen sea correcto y que el archivo realmente exista en esa ubicación.

    Otra sugerencia sería intentar usar un campo de archivo de Django en lugar de especificar la ruta completa del archivo, y luego acceder al archivo a través del atributo url del campo de archivo. Esto facilitaría el trabajo con imágenes y archivos en Django, y podría solucionar cualquier problema al acceder correctamente al camino del archivo.

    Ejemplo de uso de un campo de archivo de Django:

    def holding_pdf(self, course_slug, holding_slug):
        buffer = io.BytesIO()
        holding = HoldingDetail.objects.get(identifier=holding_slug)
        doc = SimpleDocTemplate(buffer,
                                rightMargin=72,
                                leftMargin=72,
                                topMargin=72,
                                bottomMargin=72,
                                pagesize=A4,
                                title=f"Why the {holding.name} is in the portfolio.pdf")
        elements = []
        styles = getSampleStyleSheet()
        elements.append(Paragraph(str(holding.logo.path), styles['Normal']))
        elements.append(Image(holding.logo.url))
        print(holding.logo.path)
        doc.build(elements)
        buffer.seek(0)
        return FileResponse(buffer, as_attachment=False, filename=f"Why the {holding.name} is in the portfolio.pdf")
    

    En este bloque de código actualizado, se asume que holding.logo es un campo de archivo de Django, y holding.logo.url se usa como la ruta de la imagen en la función Image().

Comments are closed.