private StandaloneDigitalInfoOneSheetOutputModel PrepareOneSheetOutput() { var outputPage = new StandaloneDigitalInfoOneSheetOutputModel(_dataContainer); outputPage.Advertiser = _dataContainer.ParentScheduleSettings.BusinessName; outputPage.DecisionMaker = _dataContainer.ParentScheduleSettings.DecisionMaker; var temp = new List <string>(); if (_digitalInfo.ShowMonthlyInvestemt && _digitalInfo.MonthlyInvestment.HasValue) { temp.Add(String.Format("Monthly Digital Investment: {0}", _digitalInfo.MonthlyInvestment.Value.ToString("$#,###.00"))); } if (_digitalInfo.ShowTotalInvestemt && _digitalInfo.TotalInvestment.HasValue) { temp.Add(String.Format("Total Digital Investment: {0}", _digitalInfo.TotalInvestment.Value.ToString("$#,###.00"))); } outputPage.SummaryInfo = temp.Any() ? String.Join(" ", temp) : String.Empty; outputPage.Color = MediaMetaData.Instance.SettingsManager.SelectedColor ?? BusinessObjects.Instance.OutputManager.ScheduleColors.Items.Select(ci => ci.Name).FirstOrDefault(); #region Set OutputDigitalProduct Values for (var j = 0; j < _digitalInfo.Records.Count; j++) { var digitalInfoRecord = _digitalInfo.Records[j]; var outputProduct = new DigitalInfoRecordOutputModel(); outputProduct.LineID = digitalInfoRecord.Index.ToString("00"); outputProduct.Logo = _digitalInfo.ShowLogo ? digitalInfoRecord.Logo?.Clone <ImageSource, ImageSource>() : null; outputProduct.Details = digitalInfoRecord.OneSheetDetails; outputPage.Records.Add(outputProduct); Application.DoEvents(); } #endregion outputPage.GetLogos(); outputPage.PopulateReplacementsList(); return(outputPage); }
public static void AppendDigitalOneSheet(this PowerPointProcessor target, StandaloneDigitalInfoOneSheetOutputModel dataModel, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var copyOfReplacementList = new Dictionary <string, string>(dataModel.ReplacementsList); var presentationTemplatePath = dataModel.TemplateFilePath; if (!File.Exists(presentationTemplatePath)) { return; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); var taggedSlide = presentation.Slides.Count > 0 ? presentation.Slides[1] : null; var logoShapes = new List <Shape>(); foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue)) { for (var i = 1; i <= shape.Tags.Count; i++) { var shapeTagName = shape.Tags.Name(i); for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++) { if (shapeTagName.Equals(String.Format("DIGLOGO{0}", j + 1))) { var fileName = dataModel.Logos.Length > j ? dataModel.Logos[j] : String.Empty; if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName)) { var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; logoShapes.Add(newShape); } shape.Visible = MsoTriState.msoFalse; } } } } var tableContainer = taggedSlide.Shapes.Cast <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue); if (tableContainer == null) { return; } var table = tableContainer.Table; var tableRowsCount = table.Rows.Count; var tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Replace(" ", ""); var key = copyOfReplacementList.Keys.FirstOrDefault(k => k.Replace(" ", "").ToLower().Equals(cellText.ToLower())); if (String.IsNullOrEmpty(key)) { continue; } tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key]; copyOfReplacementList.Remove(cellText); } } tableColumnsCount = table.Columns.Count; for (var i = tableColumnsCount; i >= 1; i--) { var tableShape = table.Cell(3, i).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("Delete Column")) { continue; } table.Columns[i].Delete(); } tableRowsCount = table.Rows.Count; for (var i = tableRowsCount; i >= 1; i--) { for (var j = 1; j < 3; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("Delete Row")) { continue; } table.Rows[i].Delete(); break; } } if (pasteToSlideMaster) { var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank); Design design; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); design = presentation.Designs[presentation.Designs.Count]; design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt"); } else { design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt")); } tableContainer.Copy(); design.SlideMaster.Shapes.Paste(); foreach (var logoShape in logoShapes) { logoShape.Copy(); design.SlideMaster.Shapes.Paste(); } if (dataModel.ContractSettings.IsConfigured) { target.FillContractInfo(design, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } newSlide.Design = design; } else { if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } if (dataModel.ContractSettings.IsConfigured) { target.FillContractInfo(taggedSlide, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } } target.AppendSlide(presentation, 1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void PrepareDigitalOneSheetEmail(this PowerPointProcessor target, string fileName, StandaloneDigitalInfoOneSheetOutputModel page, Theme selectedTheme, bool pasteToSlideMaster) { target.PreparePresentation(fileName, presentation => target.AppendDigitalOneSheet(page, selectedTheme, pasteToSlideMaster, presentation)); }