Otevření prezentací v .NET

Úvod

Aspose.Slides for .NET může načítat prezentace PowerPoint a OpenDocument ze souborů a streamů. Po načtení prezentace můžete prozkoumat její strukturu, upravovat snímky, spravovat zdroje a uložit ji v původním nebo jiném podporovaném formátu.

Chování načítání lze přizpůsobit pomocí třídy LoadOptions. Například můžete zadat otevírací heslo, uchovávat velké binární objekty mimo spravovanou paměť, řídit externí zdroje nebo vynechat vložená binární data.

Otevření prezentací

Po načtení souboru nebo streamu můžete zjistit původní formát prezentace, abyste si vybrali, jak ji aplikace zpracuje.

Pro otevření existující prezentace předáte její souborovou cestu konstruktoru Presentation. Po použití prezentaci uvolněte, aby byly souborové handle, dočasná data a další zdroje okamžitě uvolněny.

Následující příklad v C# ukazuje, jak otevřít prezentaci a získat počet snímků:

using System;
using Aspose.Slides;

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

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

Otevření prezentací chráněných heslem

Otevírací heslo šifruje obsah prezentace. Pro načtení celé prezentace přiřaďte správné heslo k LoadOptions.Password a předejte možnosti konstruktoru Presentation. Načítání selže, pokud heslo chybí nebo je nesprávné.

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);

Pro detekci, validaci a šifrovací postupy hesel viz Prezentace chráněné heslem. Pokud byla šifrovaná prezentace úmyslně uložena s veřejnými vlastnostmi dokumentu, lze tyto vlastnosti přečíst bez hesla; viz Správa vlastností prezentace.

Otevření velkých prezentací

LoadOptions.BlobManagementOptions řídí, jak Aspose.Slides zachází s velkými binárními objekty, jako jsou obrázky, audio a video. Můžete nechat zdrojový soubor uzamčený, povolit dočasné soubory a omezit množství BLOB dat uchovávaných v paměti.

Následující C# kód demonstruje načtení velké prezentace (například 2 GB):

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);

Řízení externích zdrojů

LoadOptions.ResourceLoadingCallback přijímá implementaci IResourceLoadingCallback. Zpětné volání může poskytnout náhradní data, přesměrovat zdroj, použít výchozí načítač nebo zdroj přeskočit. To je užitečné, když prezentace obsahují externí obrázky, které musí být řešeny podle specifických bezpečnostních nebo úložných pravidel aplikace.

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;
        }
    }
}

Načtení prezentací bez vložených binárních objektů

Prezentace může obsahovat vložená binární data, která aplikace nepotřebuje nebo nechce uchovávat. Příklady zahrnují:

Nastavte LoadOptions.DeleteEmbeddedBinaryObjects na true, aby se při načítání odstranila tato binární data. Uložte načtenou prezentaci, aby se zachoval očištěný výsledek.

Tato volba snižuje vystavení nechtěným vloženým nákladům, ale není kompletním systémem pro detekci malware nebo sanitaci obsahu.

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);

Často kladené otázky

Jak mohu zjistit, že je soubor poškozený a nelze jej otevřít?

Aspose.Slides během načítání vyhodí výjimku parsování nebo formátu. Tento selhání ošetřete odděleně od chyby nesprávného hesla, aby aplikace mohla přesně nahlásit příčinu.

Co se stane, pokud chybí požadovaná písma?

Prezentace se může načíst, ale při renderování a exportu může dojít k náhradě písem. Můžete nastavit náhradu písem nebo poskytnout vlastní písma, aby byl výstup předvídatelnější.

Načítá se při načtení prezentace i její vložená média?

Vložené audio a video jsou k dispozici prostřednictvím objektového modelu prezentace. Externí zdroje jsou řešeny podle nakonfigurovaného chování načítání zdrojů a mohou být nedostupné, pokud jejich umístění nelze získat.