如何在python docx模板(docxtpl)中显示图像?Django Python



我正在使用python docx模板(docxtpl(生成.docx文件。使用此数据:

docente= {
"id":145,
"lugar_de_nacimiento":"Loja",
"fecha_de_nacimiento":"1973-04-14",
"ciudad":"Loja",
"foto_web_low":"https://sica.utpl.edu.ec/media/uploads/docentes/fotos/web/low/1102904313_low.jpg"
}

我有一个函数,我将图像docente['foto_web_low']传递给context,并将模板的路径:

from docxtpl import DocxTemplate, InlineImage
from docx.shared import Mm
def generaraDocumento(request):
response = HttpResponse(content_type='application/msword')
response['Content-Disposition'] = 'attachment; filename="cv.docx"'
doc = DocxTemplate(str(settings.BASE_DIR) + '/cv_api/templates/docx_filename.docx')
imagen = docente['foto_web_low'] 
context = {'imagen': imagen}
doc.render(context)
doc.save(response)
return response

我想要显示docx_filename.docx的图像的模板是这样的:

我有想要显示docx_filename.docx的数据的模板是这样的:

Image: {{ imagen }} 

当文档生成时,我只得到URL地址,而不是图像,在我的模板中,它返回如下:

Image: https://sica.utpl.edu.ec/media/uploads/docentes/fotos/web/low/1102904313_low.jpg

如何使图像显示在文档.docx (docxtpl)中。提前谢谢。

图像必须是docxtpl.InlineImage的实例(请参阅文档(。

另一件重要的事情是图像必须存在于磁盘上。docxtpl不支持从url读取图像。

示例:

from docxtpl import InlineImage
from docx.shared import Mm

doc = DocxTemplate(str(settings.BASE_DIR) + '/cv_api/templates/docx_filename.docx')
# The image must be already saved on the disk
# reading images from url is not supported
imagen = InlineImage(doc, '/path/to/image/file.jpg', width=Mm(20)) # width is in millimetres
context = {'imagen': imagen}
# ... the rest of the code remains the same ...

在添加图像之前,先调整图像大小
使其适合您的空间

from PIL import Image
img = Image.open("image-path")
newimg = img.resize((250, 250))
newimg.save("tmplogo.png")


然后使用新大小的图像,名称为tmplogo.png

doc = DocxTemplate("Base.docx")
dic = {"logo": InlineImage(doc, "tmplogo.png")}
doc.render(dic)
doc.save("test.docx")

您当前正在将变量foto_web_low链接到url,而不是实际图像。你需要先下载图片,然后再附上。下面的代码没有经过测试,但应该是正确的方向:

首先,下载图像:

response = requests.get("https://The_URL_of_the_picture.jpg")
file = open("the_image.png", "wb")
file.write(response.content)
file.close()

然后简单地将图像添加到上下文中的变量中:

docente= {
"id":145,
...
"foto_web_low":"the_image.png",
...
}

相关内容

  • 没有找到相关文章

最新更新