Настройка первого слайда для отображения с помощью PowerPoint-Api

Я использую NetOffice.PowerPointApi для воспроизведения слайдов Powerpoint существующего PPTX. Вот как это делается:

PowerPoint.Application powerApplication = new PowerPoint.Application();
PowerPoint.Presentation presentation = powerApplication.Presentations.Open("C:\\dev\\test.pptx", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoTrue);
// presentation.SlideShowSettings.StartingSlide = 2;
presentation.SlideShowSettings.Run();
while (powerApplication.ActivePresentation.SlideShowWindow.View.CurrentShowPosition < 4)
{
   System.Threading.Thread.Sleep(2000);
   powerApplication.ActivePresentation.SlideShowWindow.View.Next();
}

Теперь я планировал показать слайд с 3 по 4.

Но когда я устанавливаю стартовый слайд (закомментированный в моем примере), я получаю сообщение об ошибке powerApplication.ActivePresentation.SlideShowWindow.View.CurrentShowPosition:

{"SlideShowView.CurrentShowPosition: недопустимый запрос. В настоящее время нет представления слайд-шоу для этой презентации."}

Это происходит только когда я устанавливаю свойство StartingSlide, Если нет, презентация начинается с первого до четвертого слайда.

1 ответ

Решение

Вам нужно установить дополнительные свойства объекта SlideShowSettings:

using NetOffice.OfficeApi.Enums;
using NetOffice.PowerPointApi.Enums;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using PowerPoint = NetOffice.PowerPointApi;

namespace PlayPowerPoint
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var app = new PowerPoint.Application())
            {
                var presentation = app.Presentations.Open(Path.GetFullPath("Test.pptx"), MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

                var slideShowSettings = presentation.SlideShowSettings;

                slideShowSettings.StartingSlide = 2;
                slideShowSettings.EndingSlide = 4;
                slideShowSettings.RangeType = PpSlideShowRangeType.ppShowSlideRange;
                slideShowSettings.AdvanceMode = PpSlideShowAdvanceMode.ppSlideShowManualAdvance;

                slideShowSettings.Run();

                var slideShowView = presentation.SlideShowWindow.View;

                while (slideShowView.CurrentShowPosition < slideShowSettings.EndingSlide)
                {
                    Thread.Sleep(2000);
                    slideShowView.Next();
                }

                presentation.Saved = MsoTriState.msoTrue;
                presentation.Close();

                app.Quit();
            }
        }
    }
}
Другие вопросы по тегам