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# insertar imagen en plantilla de Word tamaño de imagen diferente según la versión de Office.

Tengo un formulario de Windows en C# en el marco .Net 4.0, y estoy añadiendo una imagen a una plantilla de Word (marcador).
Estoy enfrentando una situación en la que, dependiendo de la versión de Office instalada en la máquina donde se ejecuta la aplicación, la imagen se renderiza en diferentes tamaños. En Word 2010 funciona muy bien, pero en versiones más recientes como en Word 365, la imagen es más pequeña.

Estoy usando el siguiente código:

Word.Document doc = null;
string filePath = “C:\myImage.png”;

        string base64bytes = "Mi cadena base64 de la imagen";

        var bytes = Convert.FromBase64String(base64bytes);

        using (MemoryStream ms = new MemoryStream(bytes))
        {
            using (System.Drawing.Image imgToResize = System.Drawing.Image.FromStream(ms))
            {
                using (Image finalImg = new Bitmap(imgToResize, new Size(150, 150)))
                {
                    finalImg.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
                }
            }
        }
        document.Bookmarks["MyBookmarkName"].Range.InlineShapes.AddPicture(filePath, true, false);

¿Hay algo más que pueda hacer? ¿O algún comando o cosa donde pueda asegurarme de que la imagen se mantenga del mismo tamaño?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás tratando de añadir una imagen a una plantilla de Word (marcador) en un formulario de Windows C# en .Net Framework 4.0. Has notado que el tamaño de la imagen es diferente dependiendo de la versión de Office instalada en la máquina. Ya has intentado usar el siguiente código:

    Word.Document doc = null;
    string filePath = "C:\myImage.png";
    
    string base64bytes = "Mi cadena base64 de imagen";
    
    var bytes = Convert.FromBase64String(base64bytes);
    
    using (MemoryStream ms = new MemoryStream(bytes))
    {
        using (System.Drawing.Image imgToResize = System.Drawing.Image.FromStream(ms))
        {
            using (Image finalImg = new Bitmap(imgToResize, new Size(150, 150)))
            {
                finalImg.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
            }
        }
    }
    document.Bookmarks["MiNombreDeMarcador"].Range.InlineShapes.AddPicture(filePath, true, false);
    

    Para asegurar que la imagen mantenga el mismo tamaño, puedes intentar establecer el ancho y alto de la imagen a un tamaño fijo. También puedes intentar establecer el nivel de zoom del documento a un valor fijo.

Comments are closed.