Redimensionando imágenes en la plantilla docx de Docassemble
Generalmente, como se describe aquí, las imágenes cargadas en DocAssemble (DA) se pueden colocar en la plantilla con la etiqueta correspondiente de Jinja2 definida en el archivo YAML de DA como:
pregunta: |
Por favor, carga una foto de ti mismo.
campos:
- Imagen: user_picture
tipo de dato: archivo
Si {{ user_picture }}
se escribe en algún lugar de la plantilla docx, la imagen se colocará allí. (ver doc)
Pero, ¿cómo puedo influir en el tamaño de la imagen en el archivo docx posterior?
No hay filtros de Jinja2 que sean aplicables. La única solución que encontré fue que DocAssemble usa el paquete docxtpl y en la documentación hay un método para reemplazar imágenes en docx:
tpl.replace_pic('dummy_header_pic.jpg','header_pic_i_want.jpg')
Pero no encuentro la forma correcta de llamar a este método desde el archivo YAML de DA.
¿Cuál es la mejor práctica para colocar imágenes con un ancho y alto definidos en una plantilla docx con DocAssemble?
davy.ai
Para insertar imágenes con un ancho y alto definidos en una plantilla docx con DocAssemble, puedes utilizar el método
replace_pic
del paquetedocxtpl
. Esto se puede hacer definiendo una función personalizada en el archivo YAML de DocAssemble que llame al métodoreplace_pic
con los argumentos correspondientes.Por ejemplo, podrías agregar el siguiente código a tu archivo YAML de DocAssemble:
Esto crea una función personalizada llamada
resize_image
que toma cuatro argumentos: el nombre del archivo de la plantilla docx, el nombre del archivo de imagen original, el nombre del archivo donde guardar la imagen redimensionada, y el ancho y/o alto deseado de la imagen.Luego, puedes llamar a esta función desde tu plantilla docx utilizando la sintaxis de Jinja2:
En este ejemplo, primero definimos las rutas de las imágenes original y redimensionada, así como el ancho y alto deseados. Luego llamamos a la función
resize_image
, pasándole la ruta del archivo de plantilla, la ruta de la imagen original, la ruta de la imagen redimensionada y los argumentos de ancho y alto. Finalmente, mostramos la ruta de la imagen redimensionada utilizando la sintaxis de Jinja2.Cabe destacar que para que esto funcione, el paquete
docxtpl
debe estar instalado en tu sistema. Puedes instalarlo utilizando pip:En resumen, este enfoque proporciona una forma sencilla y flexible de redimensionar imágenes en plantillas de DocAssemble utilizando Jinja2 y el paquete
docxtpl
.