ArcGIS Pro 3.5 API Reference Guide
ArcGIS.Desktop.Presentations Namespace / Presentation Class
Members Example

In This Topic
    Presentation Class
    In This Topic
    Represents a presentation.
    Object Model
    Presentation ClassPresentationPage ClassImagePresentationPage ClassMapPresentationPage ClassVideoPresentationPage ClassCIMPresentation ClassPresentationPage ClassCIMPage ClassOperationManager Class
    Syntax
    Example
    Export a presentation
    //Note: Call within QueuedTask.Run()
    await QueuedTask.Run(() =>
    {
      //Create mp4 format with appropriate settings
      MP4VideoFormat mp4Format = new MP4VideoFormat();
      mp4Format.Width = 800;
      mp4Format.Height = 600;
      mp4Format.OutputFileName = @"my folder\presentation.mp4";
    
      //Define Export Options
      PresentationExportOptions options = new PresentationExportOptions
      {
        PageRangeOption = ExportPageOptions.ExportByPageRange,
        CustomPages = "1,2,8"
      };
    
      //export as mp4
      presentation.Export(mp4Format, options);
    });
    Image page
    //Must be on QueuedTask
    await QueuedTask.Run(() =>
    {
      // add a new image page in current active presentation
      var imagePage = presentation.AddImagePage("my image source", -1);
    
      // change the image source
      imagePage.SetImageSource("new image source");
    });
    Video page
    //Must be on QueuedTask
    await QueuedTask.Run(() =>
    {
      // add a new video page in current active presentation
      var videoPage = presentation.AddVideoPage("my video file", -1);
    
      // change the image source
      videoPage.SetVideoSource("new video source");
    
      // change the start time of video to 3s
      videoPage.SetStartTime(3.0);
      // change the end time of video to 10s
      videoPage.SetEndTime(10.0);
    });
    
    Map page
    //Must be on QueuedTask
    await QueuedTask.Run(() =>
    {
      // retrieve a map from the project based on the map name
      MapProjectItem mpi = Project.Current.GetItems<MapProjectItem>()
                                 .FirstOrDefault(m => m.Name.Equals("Your Map Name", StringComparison.CurrentCultureIgnoreCase));
      Map map = mpi.GetMap();
      //create a map page using map's default extent
      presentation.AddMapPage(map, -1);
    
      //create a page using map's bookmark
      Bookmark bookmark = map.GetBookmarks().FirstOrDefault(
                   b => b.Name == "Your bookmark"); // get the bookmark based on the bookmark's name
      presentation.AddMapPage(bookmark, -1);
    });
    Detect changes to the presentation
    ArcGIS.Desktop.Presentations.Events.PresentationEvent.Subscribe((args) =>
    {
      var presentation = args.Presentation; //The presentation that was changed
    
      //Check what triggered the event and take appropriate action
      switch (args.Hint)
      {
        case PresentationEventHint.PropertyChanged:
          //TODO handle presentation property changed
          break;
        case PresentationEventHint.PageAdded:
          //TODO handle a new page added
          break;
        case PresentationEventHint.PageRemoved:
          //TODO handle a page removed from the presentation
          break;
        case PresentationEventHint.PageSettingChanged:
          //TODO handle page settings changed
          break;
      }
    });
    Detect changes to the presentation view
    //For UI context changes associated with a presentation, subscribe to the PresentationView
    //event - views activated/deactivated, views opened/closed
    ArcGIS.Desktop.Presentations.Events.PresentationViewEvent.Subscribe((args) =>
    {
      //get the affected view and presentation
      var view = args.PresentationView;
      var presentation = args.PresentationView?.Presentation;
      if (presentation == null)
      {
        //FYI presentationview and/or presentation can be null...
        //eg closed, deactivation
      }
      //Check what triggered the event and take appropriate action
      switch (args.Hint)
      {
        case PresentationViewEventHint.Activated:
          // Presentation view activated
          break;
        case PresentationViewEventHint.Opened:
          //A PresentationView has been initialized and opened
          break;
        case PresentationViewEventHint.Deactivated:
          // Presentation view deactivated
          break;
        case PresentationViewEventHint.Closing:
          //Set args.Cancel = true to prevent closing
          break;
        case PresentationViewEventHint.ExtentChanged:
          //presentation view extent has changed
          break;
        case PresentationViewEventHint.DrawingComplete:
          break;
        case PresentationViewEventHint.PauseDrawingChanged:
          break;
      }
    });
    Inheritance Hierarchy

    System.Object
       ArcGIS.Desktop.Framework.Contracts.PropertyChangedBase
          ArcGIS.Desktop.Framework.Contracts.ViewModelBase
             ArcGIS.Desktop.Presentations.Presentation

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.5 or higher.
    See Also