Presentaties openen in JavaScript

Introductie

Naast het van nul af aan maken van PowerPoint‑presentaties, stelt Aspose.Slides je ook in staat bestaande presentaties te openen. Nadat je een presentatie hebt geladen, kun je informatie erover opvragen, de inhoud van dia’s bewerken, nieuwe dia’s toevoegen, bestaande dia’s verwijderen en meer.

Presentaties openen

Om een bestaande presentatie te openen, instantieer je de Presentation‑klasse en geef je het bestandspad aan de constructor.

Het volgende JavaScript‑voorbeeld laat zien hoe je een presentatie opent en het aantal dia’s opvraagt:

// Instantieer de Presentation-klasse en geef een bestandspad door aan de constructor.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    // Print het totale aantal dia's in de presentatie.
    console.log(presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Wachtwoordbeveiligde presentaties openen

Wanneer je een wachtwoordbeveiligde presentatie moet openen, geef je het wachtwoord door aan de setPassword‑methode van de LoadOptions‑klasse om deze te ontcijferen en te laden. De volgende JavaScript‑code demonstreert deze handeling:

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

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
    // Voer bewerkingen uit op de ontcijferde presentatie.
} finally {
    presentation.dispose();
}

Grote presentaties openen

Aspose.Slides biedt opties — met name de getBlobManagementOptions‑methode in de LoadOptions‑klasse — om grote presentaties te laden.

De volgende JavaScript‑code laat zien hoe je een grote presentatie laadt (bijvoorbeeld 2 GB):

const filePath = "LargePresentation.pptx";

let loadOptions = new aspose.slides.LoadOptions();
// Kies het KeepLocked‑gedrag — het presentatiebestand blijft vergrendeld gedurende de levensduur van
// de Presentation‑instantie, maar het hoeft niet in het geheugen geladen te worden of gekopieerd naar een tijdelijk bestand.
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 {
    // De grote presentatie is geladen en kan worden gebruikt, terwijl het geheugenverbruik laag blijft.
    
    // Breng wijzigingen aan in de presentatie.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // Sla de presentatie op in een ander bestand. Het geheugenverbruik blijft laag tijdens deze bewerking.
    presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);

    // Doe dit niet! Er wordt een I/O‑exception opgegooid omdat het bestand vergrendeld is tot het presentatiewerkobject wordt vrijgegeven.
    //fs.unlinkSync(filePath);
} finally {
    presentation.dispose();
}

// Het is hier wel toegestaan. Het bronbestand is niet langer vergrendeld door het presentatiewerkobject.
fs.unlinkSync(filePath);

Externe bronnen beheren

Aspose.Slides biedt de IResourceLoadingCallback‑interface waarmee je externe bronnen kunt beheren. De volgende JavaScript‑code laat zien hoe je de IResourceLoadingCallback‑interface gebruikt:

const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
  resourceLoading: function(args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Laad een vervangende afbeelding.
                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")) {
            // Stel een vervangende URL in.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return aspose.slides.ResourceLoadingAction.Default;
        }
        // Sla alle andere afbeeldingen over.
        return aspose.slides.ResourceLoadingAction.Skip;
      }
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);

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

Presentaties laden zonder ingesloten binaire objecten

Een PowerPoint‑presentatie kan de volgende soorten ingesloten binaire objecten bevatten:

Met de LoadOptions.setDeleteEmbeddedBinaryObjects‑methode kun je een presentatie laden zonder enige ingesloten binaire objecten.

Deze methode is handig om potentieel schadelijke binaire inhoud te verwijderen. De volgende JavaScript‑code demonstreert hoe je een presentatie laadt zonder enige ingebedde binaire inhoud:

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

let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
    // Voer bewerkingen uit op de presentatie.
} finally {
    presentation.dispose();
}

FAQ

Hoe kan ik zien dat een bestand corrupt is en niet geopend kan worden?

Tijdens het laden krijg je een parser‑/formaat‑validatie‑exception. Dergelijke fouten vermelden vaak een ongeldige ZIP‑structuur of beschadigde PowerPoint‑records.

Wat gebeurt er als vereiste lettertypen ontbreken bij het openen?

Het bestand wordt geopend, maar later kan renderen/exporteren de lettertypen vervangen. Configureer lettertype‑substituties of voeg de vereiste lettertypen toe aan de runtime‑omgeving.

Hoe zit het met ingebedde media (video/audio) bij het openen?

Deze worden beschikbaar als presentatieresources. Als media via externe paden worden verwezen, zorg dan dat die paden toegankelijk zijn in je omgeving; anders kan renderen/exporteren de media weglaten.