コード例 #1
0
        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);
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
 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);
 }
コード例 #4
0
 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();
     }
 }
コード例 #5
0
 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);
 }
コード例 #6
0
 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();
     }
 }
コード例 #7
0
 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();
     }
 }
コード例 #8
0
        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();
                    }
                });
            }
        }
コード例 #9
0
        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 { }
        }
コード例 #10
0
		public static void Register()
		{
			IOleMessageFilter newFilter = new MessageFilter();
			IOleMessageFilter oldFilter = null;
			CoRegisterMessageFilter(newFilter, out oldFilter);
		}