Partager via


Compléments PowerPoint

Vous pouvez utiliser des compléments PowerPoint afin de créer des solutions attrayantes pour les présentations de vos utilisateurs sur différentes plateformes, notamment Windows, iPad et Mac, ainsi que dans un navigateur. Vous pouvez créer deux types de commandes de complément PowerPoint:

Scénarios de complément PowerPoint

Les exemples de code figurant dans l’article vous présentent certaines tâches de base en matière de développement de compléments de contenu pour PowerPoint. Notez également ce qui suit:

  • Pour afficher des informations, ces exemples dépendent de la fonctionapp.showNotification, qui est incluse dans les modèles de projet de compléments Office Visual Studio. Si vous n’utilisez pas Visual Studio pour développer votre complément, vous devrez remplacer la fonctionshowNotificationpar votre propre code.

  • Plusieurs de ces exemples utilisent également un Globals objet déclaré au-delà de l’étendue de ces fonctions comme suit :

    let Globals = {activeViewHandler:0, firstSlideId:0};

  • Pour utiliser ces exemples, votre projet complément doit référencer Office.js version 1.1 bibliothèque ou version ultérieure.

Détecter l’affichage actif de la présentation et gérer l’événement ActiveViewChanged

Si vous créez un complément de contenu, vous devez obtenir l’affichage actif de la présentation et gérer l’événement, dans le ActiveViewChanged cadre de votre Office.onReady gestionnaire.

Remarque

Dans PowerPoint sur le web, l’événement Document.ActiveViewChanged ne se déclenche jamais, car le mode Diaporama est considéré comme une nouvelle session. Dans ce cas, le complément doit extraire la vue active lors du chargement, comme indiqué ci-dessous.

Notez ce qui suit à propos de l’exemple de code :

  • La getActiveFileView fonction appelle la méthode Document.getActiveViewAsync pour indiquer si l’affichage actuel de la présentation est « modifier » (l’un des affichages dans lesquels vous pouvez modifier des diapositives, comme le mode Normal ou Plan) ou « lire » (diaporama ou lecture).

  • La registerActiveViewChanged fonction appelle la méthode addHandlerAsync pour inscrire un gestionnaire pour l’événement Document.ActiveViewChanged .

// General Office.onReady function. Called after the add-in loads and Office JS is initialized.
Office.onReady(function() {
    // Get whether the current view is edit or read.
    const currentView = getActiveFileView();

    // Register for the active view changed handler.
    registerActiveViewChanged();

    // Render the content based off of the currentView.
    //....
});

function getActiveFileView()
{
    Office.context.document.getActiveViewAsync(function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        } else {
            app.showNotification(asyncResult.value);
        }
    });

}

function registerActiveViewChanged() {
    Globals.activeViewHandler = function (args) {
        app.showNotification(JSON.stringify(args));
    }

    Office.context.document.addHandlerAsync(Office.EventType.ActiveViewChanged, Globals.activeViewHandler,
        function (asyncResult) {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                app.showNotification("Action failed with error: " + asyncResult.error.message);
            } else {
                app.showNotification(asyncResult.status);
            }
        });
}

Dans l’exemple de code suivant, la fonctiongetSelectedRange appelle la méthodeDocument.getSelectedDataAsync pour obtenir l’objet JSON renvoyé parasyncResult.value, qui contient un tableau nommé slides. Le slides tableau contient les ID, les titres et les index de la plage de diapositives sélectionnée (ou de la diapositive active, si plusieurs diapositives ne sont pas sélectionnées). Il enregistre également l’ID de la première diapositive de la plage sélectionnée dans une variable globale.

function getSelectedRange() {
    // Gets the ID, title, and index of the current slide (or selected slides) and store the first slide ID. */
    Globals.firstSlideId = 0;

    Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        } else {
            Globals.firstSlideId = asyncResult.value.slides[0].id;
            app.showNotification(JSON.stringify(asyncResult.value));
        }
    });
}

Dans l’exemple de code suivant la fonctiongoToFirstSlideappelle la méthodeDocument.goToByIdAsyncpour accéder à la première diapositive qui a été identifiée par la fonctiongetSelectedRangeillustrée précédemment.

function goToFirstSlide() {
    Office.context.document.goToByIdAsync(Globals.firstSlideId, Office.GoToType.Slide, function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        } else {
            app.showNotification("Navigation successful");
        }
    });
}

Dans l’exemple de code suivant, la fonctiongoToSlideByIndex appelle la méthode Document.goToByIdAsync pour passer à la diapositive suivante dans la présentation.

function goToSlideByIndex() {
    const goToFirst = Office.Index.First;
    const goToLast = Office.Index.Last;
    const goToPrevious = Office.Index.Previous;
    const goToNext = Office.Index.Next;

    Office.context.document.goToByIdAsync(goToNext, Office.GoToType.Index, function (asyncResult) {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            app.showNotification("Action failed with error: " + asyncResult.error.message);
        } else {
            app.showNotification("Navigation successful");
        }
    });
}

Obtenir l’URL de la présentation

Dans l’exemple de code suivant, la getFileUrl fonction appelle la méthode Document.getFileProperties pour obtenir l’URL du fichier de présentation.

function getFileUrl() {
    // Gets the URL of the current file.
    Office.context.document.getFilePropertiesAsync(function (asyncResult) {
        const fileUrl = asyncResult.value.url;
        if (fileUrl === "") {
            app.showNotification("The file hasn't been saved yet. Save the file and try again.");
        } else {
            app.showNotification(fileUrl);
        }
    });
}

Créer une présentation

Votre complément peut créer un nouveau classeur, distinct de l’instance de PowerPoint dans laquelle le complément est en cours d’exécution. L’espace de noms PowerPoint a la createPresentation méthode à cet effet. Lorsque cette méthode est appelée, la nouvelle présentation est immédiatement ouverte et affichée dans une nouvelle instance de PowerPoint. Votre complément reste ouvert et en cours d’exécution avec la présentation précédente.

PowerPoint.createPresentation();

La createPresentation méthode peut également créer une copie d’une présentation existante. La méthode accepte une représentation sous forme de chaîne codée en Base64 d’un fichier .pptx en tant que paramètre facultatif. La présentation résultante sera une copie de ce fichier, en supposant que l’argument de chaîne est un fichier .pptx valide. La classe FileReader peut être utilisée pour convertir un fichier en chaîne encodée en Base64 requise, comme illustré dans l’exemple suivant.

const myFile = document.getElementById("file");
const reader = new FileReader();

reader.onload = function (event) {
    // Strip off the metadata before the Base64-encoded string.
    const startIndex = reader.result.toString().indexOf("base64,");
    const copyBase64 = reader.result.toString().substr(startIndex + 7);

    PowerPoint.createPresentation(copyBase64);
};

// Read in the file as a data URL so we can parse the Base64-encoded string.
reader.readAsDataURL(myFile.files[0]);

Voir aussi