/// <param name="titleOrDescription"> /// Replaces a placeholder-image with multiple images by comparing title/description /// /// Word Image -> Right Click -> Format Picture -> Alt Text -> Title /// </param> public static void ReplaceMultipleImages(WordprocessingDocument doc, string titleOrDescription, Bitmap[] bitmaps, string newImagePartId, bool adaptSize = false, ImagePartType imagePartType = ImagePartType.Png) { Blip[] blips = FindAllBlips(doc, d => d.Title == titleOrDescription || d.Description == titleOrDescription); if (blips.Count() != bitmaps.Length) { throw new ApplicationException("Images count does not match the images count in word"); } if (adaptSize && !AvoidAdaptSize) { bitmaps = bitmaps.Select(bitmap => { var part = doc.MainDocumentPart.GetPartById(blips.First().Embed); using (var stream = part.GetStream()) { Bitmap oldBmp = (Bitmap)Bitmap.FromStream(stream); return(ImageResizer.Resize(bitmap, oldBmp.Width, oldBmp.Height)); } }).ToArray(); } doc.MainDocumentPart.DeletePart(blips.First().Embed); var i = 0; var bitmapStack = new Stack <Bitmap>(bitmaps.Reverse()); foreach (var blip in blips) { ImagePart img = CreateImagePart(doc, bitmapStack.Pop(), newImagePartId + i, imagePartType); blip.Embed = doc.MainDocumentPart.GetIdOfPart(img); i++; } }
public static bool AvoidAdaptSize = false; //Jpeg compression creates different images in TeamCity /// <param name="titleOrDescription">Word Image -> Right Click -> Format Picture -> Alt Text -> Title </param> public static void ReplaceImage(this WordprocessingDocument doc, string titleOrDescription, Bitmap bitmap, string newImagePartId, bool adaptSize = false, ImagePartType imagePartType = ImagePartType.Png) { var blip = doc.FindBlip(titleOrDescription); if (adaptSize && AvoidAdaptSize == false) { var size = doc.GetBlipBitmapSize(blip); bitmap = ImageResizer.Resize(bitmap, size.Width, size.Height); } doc.ReplaceBlipContent(blip, bitmap, newImagePartId, imagePartType); }
public static bool AvoidAdaptSize = false; //Jpeg compression creates different images in TeamCity /// <param name="title">Word Image -> Right Click -> Format Picture -> Alt Text -> Title </param> public static void ReplaceImage(WordprocessingDocument doc, string title, Bitmap bitmap, string newImagePartId, bool adaptSize = false, ImagePartType imagePartType = ImagePartType.Png) { Blip blip = FindBlip(doc, title); if (adaptSize && !AvoidAdaptSize) { var part = doc.MainDocumentPart.GetPartById(blip.Embed); Bitmap oldBmp = (Bitmap)Bitmap.FromStream(part.GetStream()); bitmap = ImageResizer.Resize(bitmap, oldBmp.Width, oldBmp.Height); } doc.MainDocumentPart.DeletePart(blip.Embed); ImagePart img = CreateImagePart(doc, bitmap, newImagePartId, imagePartType); blip.Embed = doc.MainDocumentPart.GetIdOfPart(img); }