/// <summary> /// Adds the logo inside the document. /// </summary> /// <param name="document">The document.</param> /// <param name="logo">Logo model.</param> /// <returns> /// Returns the <see cref="T:Novacode.DocX" /> which contains the logo inside. /// </returns> public static DocX AppendLogoFromModel(this DocX document, LogoModel logo) { SentinelHelper.ArgumentNull(logo); SentinelHelper.ArgumentNull(document); if (logo.IsDefault) { return(document); } if (logo.Show == YesNo.No) { return(document); } var found = logo.Image.TryGetImage(out var imageLogo); if (!found) { return(document); } var root = logo.Parent.Parent; var imagePath = root.Resources.GetImageResourceByKey(logo.Image.Key).Path; var imageFileName = Path.GetFileNameWithoutExtension(root.ParseRelativeFilePath(imagePath)); var modifiedImageFileNamePathBuilder = new StringBuilder(); modifiedImageFileNamePathBuilder.Append(FileHelper.TinExportTempDirectory); modifiedImageFileNamePathBuilder.Append(imageFileName); modifiedImageFileNamePathBuilder.Append(".png"); imageLogo.Save(modifiedImageFileNamePathBuilder.ToString(), ImageFormat.Png); var logoWidth = logo.LogoSize.Width == -1 ? imageLogo.Width : logo.LogoSize.Width; var logoHeight = logo.LogoSize.Height == -1 ? imageLogo.Height : logo.LogoSize.Height; var img = document.AddImage(modifiedImageFileNamePathBuilder.ToString()); var picture = img.CreatePicture(logoHeight, logoWidth); picture.SetPictureShape(RectangleShapes.rect); document.SetVerticalLocationFrom(logo.Location); var paragraph = document.InsertParagraph(string.Empty, false); paragraph.InsertPicture(picture).SetHorizontalAlignmentFrom(logo.Location); return(document); }