Beispiel #1
0
        /// <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++;
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }