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 cambiar las opciones de diseño de imagen en python.docx?

Necesito crear un archivo con el mismo patrón que otro, pero necesito hacerlo con Python. En este otro archivo tengo una imagen con la siguiente configuración la imagen y el texto están alineados, pero cuando intento colocar mi imagen con el siguiente código

p = doc.add_paragraph()
r = p.add_run()
r.add_picture(myPath)
r.add_text(myText)

la imagen se queda alineada solo con la primera línea del texto, como en esta imagen alineada solo con la primera línea.

Veo que si voy a Word y cambio las opciones de diseño a esto Con ajuste de texto, la segunda opción, todo funciona exactamente como quiero. Pero, ¿cómo puedo cambiar estas opciones de diseño usando python?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar las opciones de diseño de una imagen en un documento de Word utilizando python-docx, debes acceder al objeto inline_shapes del Document y luego acceder a la propiedad shape del InlineShape específico que corresponde a la imagen que deseas modificar. Una vez que tengas este objeto shape, puedes configurar su propiedad text_wrap en True y su propiedad wrap_type en el tipo de ajuste deseado. Aquí tienes un ejemplo:

    from docx import Document
    from docx.enum.text import WD_WRAP
    
    # abrir el documento
    doc = Document('mydoc.docx')
    
    # obtener el primer párrafo del documento
    p = doc.paragraphs[0]
    
    # agregar una imagen al párrafo
    r = p.add_run()
    r.add_picture('myimage.png')
    
    # obtener la forma de la imagen
    inline_shape = r.inline_shapes[0]
    shape = inline_shape._inline.graphic.graphicData.pic
    
    # establecer las opciones de ajuste
    shape.wrap_type = WD_WRAP.SQUARE
    shape.text_wrap = True
    
    # guardar el documento
    doc.save('mydoc_modified.docx')
    

    En este ejemplo, abrimos un documento (mydoc.docx) y agregamos una imagen a su primer párrafo. Luego, obtenemos el objeto shape de la imagen y establecemos sus opciones de ajuste en WD_WRAP.SQUARE (que corresponde a la opción “Con ajuste de texto” mostrada en la imagen) y text_wrap en True. Finalmente, guardamos el documento modificado como mydoc_modified.docx.

    Ten en cuenta que el enumerado WD_WRAP forma parte del módulo docx.enum.text, por lo que debes importarlo para usarlo. Además, la propiedad shape no forma parte de la API pública de python-docx, por lo que acceder directamente a ella con _inline.graphic.graphicData.pic puede estar sujeto a cambios en el futuro.

Comments are closed.