Otwieranie prezentacji w JavaScript

Wprowadzenie

Poza tworzeniem prezentacji PowerPoint od podstaw, Aspose.Slides umożliwia również otwieranie istniejących prezentacji. Po załadowaniu prezentacji możesz pobrać informacje o niej, edytować treść slajdów, dodawać nowe slajdy, usuwać istniejące i wiele więcej.

Otwieranie prezentacji

Aby otworzyć istniejącą prezentację, utwórz instancję klasy Presentation i przekaż do jej konstruktora ścieżkę do pliku.

Poniższy przykład w JavaScript pokazuje, jak otworzyć prezentację i uzyskać liczbę jej slajdów:

// Utwórz instancję klasy Presentation i przekaż ścieżkę do pliku do jej konstruktora.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    // Wypisz łączną liczbę slajdów w prezentacji.
    console.log(presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Otwieranie prezentacji zabezpieczonych hasłem

Gdy potrzebujesz otworzyć prezentację zabezpieczoną hasłem, przekaż hasło metodą setPassword klasy LoadOptions, aby odszyfrować i załadować ją. Poniższy kod w JavaScript demonstruje tę operację:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
    // Wykonaj operacje na odszyfrowanej prezentacji.
} finally {
    presentation.dispose();
}

Otwieranie dużych prezentacji

Aspose.Slides udostępnia opcje — w szczególności metodę getBlobManagementOptions w klasie LoadOptions — które pomagają w ładowaniu dużych prezentacji.

Poniższy kod w JavaScript demonstruje ładowanie dużej prezentacji (na przykład 2 GB):

const filePath = "LargePresentation.pptx";

let loadOptions = new aspose.slides.LoadOptions();
// Wybierz zachowanie KeepLocked — plik prezentacji pozostanie zablokowany przez cały czas życia
// instancji Presentation, ale nie musi być ładowany do pamięci ani kopiowany do pliku tymczasowego.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
    // Duża prezentacja została załadowana i można ją używać, przy jednoczesnym niskim zużyciu pamięci.
    
    // Wprowadź zmiany w prezentacji.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // Zapisz prezentację do innego pliku. Zużycie pamięci pozostaje niskie podczas tej operacji.
    presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);

    // Nie rób tego! Zostanie zgłoszony wyjątek I/O, ponieważ plik jest zablokowany aż do zwolnienia obiektu prezentacji.
    //fs.unlinkSync(filePath);
} finally {
    presentation.dispose();
}

// Można to zrobić tutaj. Źródłowy plik nie jest już zablokowany przez obiekt prezentacji.
fs.unlinkSync(filePath);

Kontrolowanie zasobów zewnętrznych

Aspose.Slides udostępnia interfejs IResourceLoadingCallback, który pozwala zarządzać zasobami zewnętrznymi. Poniższy kod w JavaScript pokazuje, jak używać interfejsu IResourceLoadingCallback:

const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
  resourceLoading: function(args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Załaduj zastępczy obraz.
                const imageData = fs.readFileSync("aspose-logo.jpg");
                args.setData(imageData);
                return aspose.slides.ResourceLoadingAction.UserProvided;
            } catch {
                return aspose.slides.ResourceLoadingAction.Skip;
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // Ustaw zastępczy URL.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return aspose.slides.ResourceLoadingAction.Default;
        }
        // Pomiń wszystkie pozostałe obrazy.
        return aspose.slides.ResourceLoadingAction.Skip;
      }
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);

Ładowanie prezentacji bez osadzonych obiektów binarnych

Prezentacja PowerPoint może zawierać następujące typy osadzonych obiektów binarnych:

Za pomocą metody LoadOptions.setDeleteEmbeddedBinaryObjects możesz załadować prezentację bez żadnych osadzonych obiektów binarnych.

Ta metoda jest przydatna do usuwania potencjalnie złośliwych treści binarnych. Poniższy kod w JavaScript demonstruje, jak załadować prezentację bez żadnych osadzonych treści binarnych:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
    // Wykonaj operacje na prezentacji.
} finally {
    presentation.dispose();
}

FAQ

Jak mogę stwierdzić, że plik jest uszkodzony i nie może być otwarty?

Podczas ładowania otrzymasz wyjątek parsowania/validacji formatu. Takie błędy często wskazują na nieprawidłową strukturę ZIP lub uszkodzone rekordy PowerPoint.

Co się stanie, jeśli podczas otwierania brakują wymagane czcionki?

Plik zostanie otwarty, ale później rendering/export może zastąpić czcionki. Configure font substitutions lub add the required fonts w środowisku uruchomieniowym.

Co z osadzonymi mediami (wideo/audio) przy otwieraniu?

Stają się dostępne jako zasoby prezentacji. Jeśli media są odwoływane przez ścieżki zewnętrzne, upewnij się, że te ścieżki są dostępne w Twoim środowisku; w przeciwnym razie rendering/export może pominąć media.