public bool ConvertToPDF(string originalFileName, string pdfFileName) { var result = false; try { MessageFilter.Revoke(); var workbook = ExcelObject.Workbooks.Open(originalFileName); workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfFileName, XlFixedFormatQuality.xlQualityStandard, true, false, Type.Missing, Type.Missing, false, Type.Missing); result = true; } catch { } finally { MessageFilter.Revoke(); } return(result); }
public void PreparePresentation(string fileName, Action <Presentation> buildPresentation, bool generateImages = true) { try { var thread = new Thread(delegate() { SavePrevSlideIndex(); var presentation = _powerPointObject.Presentations.Open(SlideSettingsManager.Instance.GetLauncherTemplatePath(), MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); if (presentation.Slides.Count > 0) { presentation.Slides[1].Delete(); } buildPresentation(presentation); MessageFilter.Register(); presentation.SaveAs(fileName, PpSaveAsFileType.ppSaveAsOpenXMLPresentation, MsoTriState.msoCTrue); if (generateImages) { var destinationFolder = fileName.Replace(Path.GetExtension(fileName), string.Empty); if (!Directory.Exists(destinationFolder)) { Directory.CreateDirectory(destinationFolder); } if (presentation.Slides.Count > 0) { presentation.Export(destinationFolder, "PNG"); } } presentation.Close(); Utilities.ReleaseComObject(presentation); RestorePrevSlideIndex(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public Presentation GetActivePresentation(bool create = true) { try { _activePresentation = _powerPointObject.ActivePresentation; } catch { _activePresentation = null; if (create) { try { MessageFilter.Register(); if (_powerPointObject.Presentations.Count == 0) { var presentations = _powerPointObject.Presentations; _activePresentation = presentations.Add(MsoTriState.msoCTrue); Utilities.ReleaseComObject(presentations); Slides slides = _activePresentation.Slides; slides.Add(1, PpSlideLayout.ppLayoutTitle); Utilities.ReleaseComObject(slides); } else { var presentations = _powerPointObject.Presentations; _activePresentation = presentations[1]; Utilities.ReleaseComObject(presentations); } } catch { _activePresentation = null; } finally { MessageFilter.Revoke(); } } } return(_activePresentation); }
public void ConvertToPDF(string originalFileName, string pdfFileName) { try { MessageFilter.Register(); if (_powerPointObject == null) { return; } Presentation presentationObject = _powerPointObject.Presentations.Open(originalFileName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); presentationObject.SaveAs(pdfFileName, PpSaveAsFileType.ppSaveAsPDF, MsoTriState.msoCTrue); presentationObject.Close(); Utilities.ReleaseComObject(presentationObject); } catch { } finally { MessageFilter.Revoke(); } }
public virtual bool Connect(bool forceNewObject = false) { try { MessageFilter.Register(); _powerPointObject = GetExistedPowerPoint(); if (forceNewObject && _powerPointObject == null) { _powerPointObject = CreateNewPowerPoint(); _isFirstLaunch = true; } _powerPointObject.DisplayAlerts = PpAlertLevel.ppAlertsNone; } catch { _powerPointObject = null; } finally { MessageFilter.Revoke(); } return(_powerPointObject != null); }
public SlideSettings GetActiveSlideSettings() { try { MessageFilter.Register(); var settings = new SlideSettings(); if (_powerPointObject?.ActivePresentation == null) { return(null); } settings.SlideSize.Width = Math.Round(Convert.ToDecimal(_powerPointObject.ActivePresentation.PageSetup.SlideWidth / 72), 3); settings.SlideSize.Height = Math.Round(Convert.ToDecimal(_powerPointObject.ActivePresentation.PageSetup.SlideHeight / 72), 3); return(settings); } catch { return(null); } finally { MessageFilter.Revoke(); } }
public void AppendSlideMaster(string presentationTemplatePath, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var presentation = _powerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public void PrintPresentation(string presentationPath, int currentSlideIndex, Action <Action> printActionWrapper) { using (var dlg = new PrintDialog { AllowCurrentPage = true, AllowPrintToFile = false, AllowSelection = false, AllowSomePages = true, ShowNetwork = true, UseEXDialog = true }) { if (dlg.ShowDialog() != DialogResult.OK) { return; } var fromPage = dlg.PrinterSettings.FromPage; var toPage = 1; var collate = dlg.PrinterSettings.Collate; var copies = dlg.PrinterSettings.Copies; var printRange = dlg.PrinterSettings.PrintRange; var printerName = dlg.PrinterSettings.PrinterName; printActionWrapper(() => { try { MessageFilter.Register(); var presentation = PowerPointObject.Presentations.Open(presentationPath, WithWindow: MsoTriState.msoFalse); switch (printRange) { case System.Drawing.Printing.PrintRange.AllPages: fromPage = 1; toPage = presentation.Slides.Count; break; case System.Drawing.Printing.PrintRange.CurrentPage: fromPage = currentSlideIndex; toPage = currentSlideIndex; break; case System.Drawing.Printing.PrintRange.SomePages: if (fromPage < 1) { fromPage = 1; } toPage = currentSlideIndex; if (toPage > presentation.Slides.Count) { toPage = presentation.Slides.Count; } break; } presentation.PrintOptions.PrintInBackground = MsoTriState.msoFalse; presentation.PrintOptions.ActivePrinter = printerName; presentation.PrintOptions.NumberOfCopies = copies; presentation.PrintOut( fromPage, toPage, String.Empty, copies, collate ? MsoTriState.msoTrue : MsoTriState.msoFalse); presentation.Close(); Utilities.ReleaseComObject(presentationPath); } catch { } finally { MessageFilter.Revoke(); } }); } }
public void AppendSlide(Presentation sourcePresentation, int slideIndex, Presentation destinationPresentation = null, bool firstSlide = false, int indexToPaste = 0) { MessageFilter.Register(); var tempPresentationPath = Path.GetTempFileName(); try { sourcePresentation.SaveAs(tempPresentationPath); } catch { tempPresentationPath = sourcePresentation.FullName; } if (destinationPresentation == null) { GetActivePresentation(); destinationPresentation = _activePresentation; indexToPaste = GetActiveSlideIndex(); } else if (!firstSlide) { indexToPaste = destinationPresentation.Slides.Count; } if (firstSlide) { indexToPaste = 0; } Slide addedSlide = null; var slides = sourcePresentation.Slides; for (var i = 1; i <= slides.Count; i++) { if ((i != slideIndex) && (slideIndex != -1)) { continue; } var slide = slides[i]; var activeSlides = destinationPresentation.Slides; activeSlides.InsertFromFile(tempPresentationPath, indexToPaste, i, i); indexToPaste++; addedSlide = activeSlides[indexToPaste]; var design = GetDesignFromSlide(slide, destinationPresentation); if (design != null) { addedSlide.Design = design; } else { var slideDesign = sourcePresentation.SlideMaster.Design; addedSlide.Design = slideDesign; Utilities.ReleaseComObject(slideDesign); } var colorScheme = slide.ColorScheme; addedSlide.ColorScheme = colorScheme; Utilities.ReleaseComObject(colorScheme); Utilities.ReleaseComObject(design); Utilities.ReleaseComObject(slide); Utilities.ReleaseComObject(activeSlides); } if (addedSlide != null) { addedSlide.Select(); } Utilities.ReleaseComObject(addedSlide); Utilities.ReleaseComObject(slides); MessageFilter.Revoke(); try { File.Delete(tempPresentationPath); } catch { } }
public static void Register() { IOleMessageFilter newFilter = new MessageFilter(); IOleMessageFilter oldFilter = null; CoRegisterMessageFilter(newFilter, out oldFilter); }