Надстройки PowerPoint
С помощью надстроек PowerPoint можно создавать удобные решения, подходящие для использования в презентациях на различных платформах, таких как Windows, iPad, Mac и браузеры. Можно создать два типа надстроек PowerPoint:
Контентные надстройки позволяют добавлять динамический контент HTML5 в презентации. Например, ознакомьтесь с надстройкой LucidChart Diagrams for PowerPoint, с помощью которой можно добавить интерактивные схемы LucidChart в набор слайдов. Чтобы создать собственную контентную надстройку, можно начать с создания первой контентной надстройки PowerPoint.
Надстройки области задач позволяют добавлять справочные сведения или данные в презентацию с помощью службы. Например, используя надстройку Pexels - Free Stock Photos, вы можете вставить профессиональные фотографии в свою презентацию. Чтобы создать собственную надстройку области задач, можно начать с создания первой надстройки области задач PowerPoint.
Сценарии надстроек PowerPoint
В приведенных в этой статье примерах кода показаны основные задачи по разработке надстроек для PowerPoint. Обратите внимание на следующее:
При отображении сведений эти примеры используют функцию
app.showNotification
, включенную в шаблоны проектов надстроек Office в Visual Studio. Если для разработки надстройки вы не используете Visual Studio, замените функциюshowNotification
собственным кодом.В некоторых из этих примеров также используется объект, объявленный
Globals
за пределами область этих функций, как:let Globals = {activeViewHandler:0, firstSlideId:0};
Для использования этих примеров необходимо, чтобы проект надстройки ссылался на библиотеку Office.js 1.1 или более поздней версии.
Определение активного представления презентации и обработка события ActiveViewChanged
При создании контентной надстройки необходимо получить активное представление презентации и обработать ActiveViewChanged
событие как часть обработчика Office.onReady
.
Примечание.
В PowerPoint в Интернете не удастся запустить событие Document.ActiveViewChanged, поскольку режим показа слайдов обрабатывается как новый сеанс. В этом случае надстройке необходимо получить активное представление по загрузке, как показано в примере кода ниже.
Обратите внимание на следующее о примере кода:
Функция
getActiveFileView
вызывает метод Document.getActiveViewAsync , чтобы определить, является ли текущее представление презентации "edit" (любое из представлений, в которых можно редактировать слайды, например "Обычный " или "Режим структуры") или "Чтение" (слайд-шоу или режим чтения).Функция
registerActiveViewChanged
вызывает метод addHandlerAsync для регистрации обработчика для события 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);
}
});
}
Переход к определенному слайду презентации
В следующем примере кода функция getSelectedRange
вызывает метод Document.getSelectedDataAsync для получения объекта JSON, возвращаемого свойством asyncResult.value
. Этот объект содержит массив с именем slides
. Массив slides
содержит идентификаторы, заголовки и индексы выбранного диапазона слайдов (или текущего слайда, если не выбрано несколько слайдов). Он также сохраняет идентификатор первого слайда в выбранном диапазоне в глобальную переменную.
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));
}
});
}
В приведенном ниже примере кода функция goToFirstSlide
вызывает метод Document.goToByIdAsync для перехода к первому слайду, который был определен показанной ранее функцией getSelectedRange
.
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");
}
});
}
Переход между слайдами презентации
В следующем примере кода функция goToSlideByIndex
вызывает метод Document.goToByIdAsync
для перехода к следующему слайду презентации.
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");
}
});
}
Получение URL-адреса презентации
В следующем примере кода функция вызывает метод Document.getFileProperties, getFileUrl
чтобы получить URL-адрес файла презентации.
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);
}
});
}
Создание презентации
Ваша надстройка может создать новую презентацию, отдельную от экземпляра PowerPoint, в котором в настоящее время работает надстройка. Для этой цели в пространстве имен PowerPoint есть метод createPresentation
. При вызове этого метода сразу открывается и отображается новая презентация в новом экземпляре программы PowerPoint. Ваша надстройка остается открытой и запущенной в предыдущей презентации.
PowerPoint.createPresentation();
С помощью метода createPresentation
также можно создать копию существующей презентации. Метод принимает строковое представление файла .pptx в кодировке Base64 в качестве необязательного параметра. Полученная презентация будет копией этого файла, предполагая, что строковый аргумент является допустимым PPTX-файлом. Класс FileReader можно использовать для преобразования файла в требуемую строку в кодировке Base64, как показано в следующем примере.
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]);
См. также
- Разработка надстроек Office
- Сведения о программе для разработчиков Microsoft 365
- Краткое руководство по PowerPoint
- Примеры кода PowerPoint
- Сохранение состояния надстройки и параметров документа для надстроек области задач и контентных надстроек
- Чтение и запись данных при активном выделении фрагмента в документе или электронной таблице
- Получение всего документа из надстройки для PowerPoint или Word
- Использование тем документов в надстройках PowerPoint
Office Add-ins