Настройка первого слайда для отображения с помощью 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();
}
}
}
}