Otevřít prezentace v .NET

Úvod

Kromě vytváření prezentací PowerPoint od nuly umožňuje Aspose.Slides také otevřít existující prezentace. Po načtení prezentace můžete získat informace o ní, upravit obsah snímků, přidat nové snímky, odebrat existující a další.

Otevření prezentací

Chcete‑li otevřít existující prezentaci, vytvořte instanci třídy Presentation a jako argument předávejte cestu k souboru.

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

// Vytvořte instanci třídy Presentation a předejte konstruktoru cestu k souboru.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // Vytiskněte celkový počet snímků v prezentaci.
    System.Console.WriteLine(presentation.Slides.Count);
}

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

Když potřebujete otevřít prezentaci chráněnou heslem, zadejte heslo pomocí vlastnosti Password třídy LoadOptions pro dešifrování a načtení. Následující kód v C# demonstruje tuto operaci:

LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
using (Presentation presentation = new Presentation("Sample.pptx", loadOptions))
{
    // Proveďte operace na dešifrované prezentaci.
}

Otevření velkých prezentací

Aspose.Slides poskytuje možnosti – zejména vlastnost BlobManagementOptions ve třídě LoadOptions – které vám pomohou načíst velké prezentace.

Následující kód v C# ukazuje načítání velké prezentace (například 2 GB):

const string filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = 
    {
        // Vyberte chování KeepLocked — soubor prezentace zůstane uzamčen po celou dobu 
        // instance Presentation, ale není nutné jej načítat do paměti ani kopírovat do dočasného souboru.
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024 // 10 MB
    }
};

using (Presentation presentation = new Presentation(filePath, loadOptions))
{
    // Velká prezentace byla načtena a může být používána, přičemž spotřeba paměti zůstává nízká.

    // Proveďte změny v prezentaci.
    presentation.Slides[0].Name = "Large presentation";

    // Uložte prezentaci do jiného souboru. Spotřeba paměti během této operace zůstává nízká.
    presentation.Save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Nedělejte to! Bude vyvolána výjimka I/O, protože soubor je uzamčen, dokud není objekt prezentace uvolněn.
    File.Delete(filePath);
}

// Je v pořádku to udělat zde. Zdrojový soubor již není uzamčen objektem prezentace.
File.Delete(filePath);

Řízení externích zdrojů

Aspose.Slides poskytuje rozhraní IResourceLoadingCallback, které vám umožňuje spravovat externí zdroje. Následující kód v C# ukazuje, jak použít rozhraní IResourceLoadingCallback:

LoadOptions loadOptions = new LoadOptions();
loadOptions.ResourceLoadingCallback = new ImageLoadingHandler();

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
public class ImageLoadingHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
    {
        if (args.OriginalUri.EndsWith(".jpg"))
        {
            try
            {
                // Načtěte náhradní obrázek.
                byte[] imageData = File.ReadAllBytes("aspose-logo.jpg");
                args.SetData(imageData);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // Nastavte náhradní URL.
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // Přeskočte všechny ostatní obrázky.
        return ResourceLoadingAction.Skip;
    }
}

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

Prezentace PowerPoint může obsahovat následující typy vložených binárních objektů:

Pomocí vlastnosti ILoadOptions.DeleteEmbeddedBinaryObjects můžete načíst prezentaci bez jakýchkoli vložených binárních objektů.

Tato vlastnost je užitečná pro odstranění potenciálně škodlivého binárního obsahu. Následující kód v C# ukazuje, jak načíst prezentaci bez vloženého binárního obsahu:

LoadOptions loadOptions = new LoadOptions()
{
	DeleteEmbeddedBinaryObjects = true
}

using (Presentation presentation = new Presentation("malware.ppt", loadOptions))
{
    // Proveďte operace s prezentací.
}

Často kladené dotazy

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

Během načítání dostanete výjimku při parsování/validaci formátu. Takové chyby často uvádějí neplatnou strukturu ZIP nebo poškozené záznamy PowerPointu.

Co se stane, pokud při otevírání chybí požadovaná písma?

Soubor se otevře, ale později může rendering/export nahradit písma. Configure font substitutions nebo add the required fonts přidejte do runtime prostředí.

Co se stane s vloženými médii (video/audio) při otevírání?

Stávají se dostupnými jako zdroje prezentace. Pokud jsou média odkazována externími cestami, zajistěte, aby tyto cesty byly ve vašem prostředí přístupné; v opačném případě může rendering/export média vynechat.