Открытие презентаций в .NET

Введение

Aspose.Slides for .NET может загружать презентации PowerPoint и OpenDocument из файлов и потоков. После загрузки презентации вы можете исследовать её структуру, редактировать слайды, управлять ресурсами и сохранять её в исходном или другом поддерживаемом формате.

Поведение загрузки можно настроить с помощью класса LoadOptions. Например, можно задать пароль открытия, хранить крупные двоичные объекты за пределами управляемой памяти, управлять внешними ресурсами или исключать встроенные двоичные данные.

Открытие презентаций

После загрузки файла или потока вы можете определить оригинальный формат презентации, чтобы выбрать способ обработки в вашем приложении.

Чтобы открыть существующую презентацию, передайте путь к файлу конструктору Presentation. Освобождайте объект презентации после использования, чтобы дескрипторы файлов, временные данные и другие ресурсы были быстро освобождены.

Следующий пример на C# демонстрирует, как открыть презентацию и получить количество её слайдов:

using System;
using Aspose.Slides;

using var presentation = new Presentation("sample.pptx");

Console.WriteLine("Slide count: " + presentation.Slides.Count);

Открытие защищённых паролем презентаций

Пароль открытия шифрует содержимое презентации. Чтобы загрузить полностью презентацию, задайте правильный пароль в LoadOptions.Password и передайте параметры в конструктор Presentation. Загрузка будет неудачной, если пароль отсутствует или неверен.

using System;
using Aspose.Slides;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);

Console.WriteLine("Slide count: " + presentation.Slides.Count);

Для обнаружения пароля, проверки и процессов шифрования см. Защита презентаций паролем. Если зашифрованная презентация была специально сохранена с публичными свойствами документа, эти свойства можно прочитать без пароля; см. Управление свойствами презентации.

Открытие больших презентаций

LoadOptions.BlobManagementOptions управляет тем, как Aspose.Slides обрабатывает крупные двоичные объекты, такие как изображения, аудио и видео. Вы можете оставлять исходный файл заблокированным, разрешать временные файлы и ограничивать количество BLOB‑данных, сохраняемых в памяти.

Следующий код на C# демонстрирует загрузку большой презентации (например, 2 ГБ):

using Aspose.Slides;
using Aspose.Slides.Export;

const string filePath = "large-presentation.pptx";

var loadOptions = new LoadOptions
{
    BlobManagementOptions =
    {
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024
    }
};

using var presentation = new Presentation(filePath, loadOptions);

presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);

Управление внешними ресурсами

LoadOptions.ResourceLoadingCallback принимает реализацию IResourceLoadingCallback. Обратный вызов может предоставить заменяющие данные, перенаправить ресурс, использовать загрузчик по умолчанию или пропустить ресурс. Это полезно, когда презентации содержат внешние изображения, которые необходимо разрешать в соответствии со специфическими для приложения правилами безопасности или хранения.

using System;
using System.IO;
using Aspose.Slides;

internal static class OpenPresentationExample
{
    private static void Main()
    {
        var loadOptions = new LoadOptions
        {
            ResourceLoadingCallback = new ImageLoadingHandler()
        };

        using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
        Console.WriteLine("Slide count: " + presentation.Slides.Count);
    }

    private sealed class ImageLoadingHandler : IResourceLoadingCallback
    {
        public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
        {
            var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
            if (!isJpeg || !File.Exists("approved-image.jpg"))
            {
                return ResourceLoadingAction.Skip;
            }

            var imageData = File.ReadAllBytes("approved-image.jpg");
            args.SetData(imageData);
            return ResourceLoadingAction.UserProvided;
        }
    }
}

Загрузка презентаций без встроенных двоичных объектов

Презентация может содержать встроенные двоичные данные, которые приложению не нужны или которые оно не хочет сохранять. Примеры включают:

Установите LoadOptions.DeleteEmbeddedBinaryObjects в true, чтобы удалить эти двоичные данные при загрузке. Сохраните загруженную презентацию, чтобы сохранить полученный очищенный результат.

Эта опция уменьшает риск нежелательных встроенных полезных нагрузок, однако она не является полноценной системой обнаружения вредоносного кода или очистки содержимого.

using Aspose.Slides;
using Aspose.Slides.Export;

var loadOptions = new LoadOptions
{
    DeleteEmbeddedBinaryObjects = true
};

using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);

presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);

Часто задаваемые вопросы

Как можно определить, что файл повреждён и не может быть открыт?

Aspose.Slides генерирует исключение парсинга или формата во время загрузки. Обрабатывайте эту ошибку отдельно от ошибки неправильного пароля, чтобы приложение могло точно сообщить о причине.

Что происходит, если отсутствуют требуемые шрифты?

Презентацию всё ещё можно загрузить, но при рендеринге и экспорте могут быть подставлены шрифты. Вы можете настроить замену шрифтов или предоставить пользовательские шрифты, чтобы сделать вывод более предсказуемым.

Загружает ли загрузка презентации также встроенные медиа?

Встроенные аудио и видео становятся доступны через объектную модель презентации. Внешние ресурсы разрешаются в соответствии с настроенным поведением загрузки ресурсов и могут быть недоступны, если их расположения недоступны.