J'ai récemment essayé d'incorporer un fichier PowerPoint en tant que XpsDocument dans WPF.Incorporation de diapositives XpsDocument PowerPoint dans un DocumentViewer WPF
Il est une simple application WPF dans laquelle j'intégrer une propriété DocumentViewer dans ma grille MainWindow.xaml:
<Window x:Class="PowerPoint2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PowerPoint2"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DocumentViewer
Name="DocumentviewPowerPoint"
VerticalAlignment="Top"
HorizontalAlignment="Left" />
</Grid>
Pour créer le document lié à "DocumentviewPowerPoint" je convertir le fichier PowerPoint a été ouvert au format XPS et lier cette variable à la propriété XAML mentionnée plus haut:
using System;
using System.IO;
using System.Windows;
using System.Windows.Xps.Packaging;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using Application = Microsoft.Office.Interop.PowerPoint.Application;
namespace PowerPoint2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
const string powerPointFile = @"c:\temp\ppt.pptx";
var xpsFile = Path.GetTempPath() + Guid.NewGuid() + ".pptx";
var xpsDocument = ConvertPowerPointToXps(powerPointFile, xpsFile);
DocumentviewPowerPoint.Document = xpsDocument.GetFixedDocumentSequence();
}
private static XpsDocument ConvertPowerPointToXps(string pptFilename, string xpsFilename)
{
var pptApp = new Application();
var presentation = pptApp.Presentations.Open(pptFilename, MsoTriState.msoTrue, MsoTriState.msoFalse,
MsoTriState.msoFalse);
try
{
presentation.ExportAsFixedFormat(xpsFilename, PpFixedFormatType.ppFixedFormatTypeXPS);
}
catch (Exception ex)
{
MessageBox.Show("Failed to export to XPS format: " + ex);
}
finally
{
presentation.Close();
pptApp.Quit();
}
return new XpsDocument(xpsFilename, FileAccess.Read);
}
}
}
Tout cela fonctionne assez bien lors de l'exécution du p rogramme, montrant le document Xps intégré dans le WPF:
Ma question est de savoir comment puis-je modifier encore mon code pour afficher le PowerPoint non seulement comme une série de diapositives défilants comme indiqué, mais comme réelle diaporama? Je voudrais faire d'autres mises à jour pour permettre à l'utilisateur de naviguer vers la diapositive suivante à chaque clic de souris - comme une présentation «appropriée». Mon problème est que je ne suis pas familier avec l'utilisation de l'Apis XpsDocument - Je ne sais pas s'il s'agit de les utiliser pour obtenir ce que je veux ou est-ce dans les propriétés de paramètres de la variable de présentation convertie au format Xps .