public static void PrepareDashboardClientGoals(this PowerPointProcessor target, IClientGoalsOutputData outputData, string fileName) { target.PreparePresentation(fileName, presentation => target.AppendDashboardClientGoals(outputData, presentation)); }
public static void AppendWebPackage(this PowerPointProcessor target, IWebPackageOutput digitalPackage, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var slidesCount = digitalPackage.OutputReplacementsLists.Count; var rowsCount = digitalPackage.RowsPerSlide; for (var k = 0; k < slidesCount; k++) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlinePackageFile(rowsCount, digitalPackage.PackageSettings.ShowScreenshot); if (!File.Exists(presentationTemplatePath)) { continue; } var presentation = target.PowerPointObject.Presentations.Open(FileName: presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { if (shape.HasTable != MsoTriState.msoTrue) { continue; } var table = shape.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.Trim(); if (!digitalPackage.OutputReplacementsLists[k].ContainsKey(cellText)) { continue; } tableShape.TextFrame.TextRange.Text = digitalPackage.OutputReplacementsLists[k][cellText]; digitalPackage.OutputReplacementsLists[k].Remove(cellText); } } var deletedRows = 0; for (var i = 1; i <= tableRowsCount; i++) { var tableShape = table.Cell(i - deletedRows, 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteRow")) { continue; } table.Rows[i - deletedRows].Delete(); deletedRows++; } var deletedColumns = 0; tableRowsCount = table.Rows.Count; tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableColumnsCount; i++) { for (var j = 1; j <= tableRowsCount; j++) { var tableShape = table.Cell(j, i - deletedColumns).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteColumn")) { continue; } table.Columns[i - deletedColumns].Delete(); deletedColumns++; break; } } } } var selectedTheme = digitalPackage.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); } }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendDashboardClientGoals(this PowerPointProcessor target, IClientGoalsOutputData outputData, Presentation destinationPresentation = null) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetClientGoalsFile(String.Format(MasterWizardManager.ClientGoalsSlideTemplate, outputData.GoalsCount)); if (!File.Exists(presentationTemplatePath)) { return; } try { var thread = new Thread(delegate() { MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = outputData.Title; break; case "TEXTBOX0": shape.TextFrame.TextRange.Text = outputData.SelectedGoals[0]; break; case "TEXTBOX1": shape.TextFrame.TextRange.Text = outputData.SelectedGoals[1]; break; case "TEXTBOX2": shape.TextFrame.TextRange.Text = outputData.SelectedGoals[2]; break; case "TEXTBOX3": shape.TextFrame.TextRange.Text = outputData.SelectedGoals[3]; break; case "TEXTBOX4": shape.TextFrame.TextRange.Text = outputData.SelectedGoals[4]; break; } } } } var selectedTheme = outputData.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendOneSheet(this PowerPointProcessor target, DigitalProduct source, Theme theme, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlineOneSheetFile(source.OutputData.GetSlideSource()); if (string.IsNullOrEmpty(presentationTemplatePath)) { return; } if (!File.Exists(presentationTemplatePath)) { return; } MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { #region Top Part case "HEADER": shape.TextFrame.TextRange.Text = String.Format(source.OutputData.Header, shape.TextFrame.TextRange.Text); break; case "WEBSITEURL": shape.TextFrame.TextRange.Text = source.OutputData.Websites; break; case "DATETAG": shape.TextFrame.TextRange.Text = source.OutputData.PresentationDate; break; case "ADVERTISER": shape.TextFrame.TextRange.Text = source.OutputData.BusinessName; break; case "DECMKR": shape.TextFrame.TextRange.Text = source.OutputData.DecisionMaker; break; case "CAMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.FlightDates; break; case "WEBPRODUCT": shape.TextFrame.TextRange.Text = source.OutputData.ProductName; break; case "WEBDESCRIPT": shape.TextFrame.TextRange.Text = source.OutputData.Description; break; #endregion case "MTHIMPLABEL": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Name : String.Empty; break; case "MONTHLYIMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Code : String.Empty; break; case "MONTHINVLBL": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Name : String.Empty; break; case "MONTHINVVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Code : String.Empty; break; case "MCPM": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Name : String.Empty; break; case "MCPMVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Code : String.Empty; break; case "TTLIMPLABEL": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Name : String.Empty; break; case "TOTALIMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Code : String.Empty; break; case "TOTINVLBL": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Name : String.Empty; break; case "TOTINVVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Code : String.Empty; break; case "TCPM": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Name : String.Empty; break; case "TCPMVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Code : String.Empty; break; case "INVDET": shape.TextFrame.TextRange.Text = source.OutputData.InvestmentDetails;; break; case "CMNTVALUE": shape.TextFrame.TextRange.Text = source.OutputData.Comment;; break; } } } } if (theme != null) { presentation.ApplyTheme(theme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void PrepareWebPackageEmail(this PowerPointProcessor target, string fileName, IWebPackageOutput digitalPackage) { target.PreparePresentation(fileName, presentation => target.AppendWebPackage(digitalPackage, presentation)); }
public static void PrepareSummaryEmail(this PowerPointProcessor target, string fileName, ISummaryControl summary, bool tabelOutput) { target.PreparePresentation(fileName, presentation => target.AppendSummary(summary, tabelOutput, presentation)); }
public static void PrepareScheduleEmail(this PowerPointProcessor target, string fileName, DigitalProduct product, Theme theme) { target.PreparePresentation(fileName, presentation => target.AppendOneSheet(product, theme, presentation)); }
private static void AppendSlideSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { var itemsCount = summary.ItemsCount; var mainFileTemplateIndex = itemsCount >= SummaryConstants.MaxOneSheetItems ? SummaryConstants.MaxOneSheetItems : itemsCount; var additionalFileTemplateIndex = itemsCount > SummaryConstants.MaxOneSheetItems ? itemsCount % SummaryConstants.MaxOneSheetItems : 0; var mainFilesCount = itemsCount / SummaryConstants.MaxOneSheetItems; if (mainFilesCount == 0 && itemsCount > 0) { mainFilesCount++; } try { var thread = new Thread(delegate() { var mainPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, mainFileTemplateIndex)); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(mainPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); for (int j = 0; j < (itemsCount - additionalFileTemplateIndex); j += mainFileTemplateIndex) { foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: for (int k = 0; k < mainFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); } presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } if (additionalFileTemplateIndex == 0) { return; } try { var thread = new Thread(delegate() { var additionalPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, (additionalFileTemplateIndex + mainFileTemplateIndex))); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(additionalPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: int j = mainFileTemplateIndex * mainFilesCount; for (int k = 0; k < additionalFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } }
private static void AppendTableSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var slidesCount = summary.OutputReplacementsLists.Count; for (var k = 0; k < slidesCount; k++) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTableFile(String.Format(MasterWizardManager.SimpleSummaryTableTemplate, summary.ItemsPerTable)); if (!File.Exists(presentationTemplatePath)) { continue; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (var i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; default: var startIndex = k * summary.ItemsPerTable; for (var j = 0; j < summary.ItemsPerTable; j++) { if (shape.Tags.Name(i).Equals(String.Format("ICON{0}", j + 1))) { if (summary.ShowIcons && (j + startIndex) < summary.ItemsCount && !String.IsNullOrEmpty(summary.TableIcons[j + startIndex])) { var filePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryIconFile(summary.TableIcons[j + startIndex]); var newShape = slide.Shapes.AddPicture(filePath, 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; } shape.Visible = MsoTriState.msoFalse; } } break; } } if (shape.HasTable != MsoTriState.msoTrue) { continue; } var table = shape.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++) { if (j > table.Columns.Count) { continue; } var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Contains("Product") || summary.ShowIcons) { continue; } var prevColumnIndex = j - 1; if (prevColumnIndex < 1) { continue; } table.Cell(i, j).Merge(table.Cell(i, prevColumnIndex)); } } tableRowsCount = table.Rows.Count; 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.Trim(); if (!summary.OutputReplacementsLists[k].ContainsKey(cellText)) { continue; } tableShape.TextFrame.TextRange.Text = summary.OutputReplacementsLists[k][cellText]; summary.OutputReplacementsLists[k].Remove(cellText); } } for (var i = tableRowsCount; i >= 1; i--) { var tableShape = table.Cell(i, 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteRow")) { continue; } try { table.Rows[i].Delete(); } catch { shape.Visible = MsoTriState.msoFalse; } } } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); } }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void PrepareStrategyEmail(this PowerPointProcessor target, string fileName, DigitalInfoStrategyOutputModel dataModel, Theme selectedTheme) { target.PreparePresentation(fileName, presentation => target.AppendStrategy(dataModel, selectedTheme, presentation)); }
public static void AppendStrategy(this PowerPointProcessor target, DigitalInfoStrategyOutputModel source, Theme theme, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { var presentationTemplatePath = source.TemplatePath; if (string.IsNullOrEmpty(presentationTemplatePath)) { return; } if (!File.Exists(presentationTemplatePath)) { return; } MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { var shapeTagName = shape.Tags.Name(i); switch (shapeTagName) { case "MONTHDIGINV": shape.TextFrame.TextRange.Text = source.Total2; break; case "TOTALDIGINV": shape.TextFrame.TextRange.Text = source.Total1; break; default: for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++) { if (shapeTagName.Equals(String.Format("DIGITAL_GRAPHIC{0}", j + 1))) { var fileName = source.Logos.Length > j ? source.Logos[j] : String.Empty; if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName)) { var newShape = slide.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; } shape.Visible = MsoTriState.msoFalse; } if (shapeTagName.Equals(String.Format("DIGITAL_TAG{0}", j + 1))) { shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text1 : String.Empty; } if (shapeTagName.Equals(String.Format("DIGITAL_DETAILS{0}", j + 1))) { shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text2 : String.Empty; } } break; } } } } if (theme != null) { presentation.ApplyTheme(theme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
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)); }
public static void PrepareMediaOneSheetEmail(this PowerPointProcessor target, string fileName, IEnumerable <ProgramScheduleOutputModel> pages, Theme selectedTheme, bool pasteToSlideMaster) { target.PreparePresentation(fileName, presentation => target.AppendMediaOneSheet(pages, selectedTheme, pasteToSlideMaster, presentation)); }