Open presentaties in Java

Introductie

Naast het maken van PowerPoint‑presentaties vanaf nul, maakt Aspose.Slides het ook mogelijk om bestaande presentaties te openen. Nadat een presentatie is geladen, kun je informatie erover ophalen, de inhoud van dia’s bewerken, nieuwe dia’s toevoegen, bestaande dia’s verwijderen en meer.

Presentaties openen

Om een bestaande presentatie te openen, maak je een instantie van de Presentation‑klasse en geef je het bestandspad door aan de constructor.

Het volgende Java‑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.
Presentation presentation = new Presentation("Sample.pptx");
try {
    // Print het totale aantal dia's in de presentatie.
    System.out.println(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 ontsleutelen en te laden. De volgende Java‑code demonstreert deze bewerking:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

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

Grote presentaties openen

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

De volgende Java‑code toont het laden van een grote presentatie (bijvoorbeeld 2 GB):

final String filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions();
// Kies het KeepLocked‑gedrag — het presentatiebestand blijft vergrendeld gedurende de levensduur van
// de Presentation‑instantie, maar hoeft niet in het geheugen te worden geladen of naar een tijdelijk bestand gekopieerd.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

Presentation presentation = new 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 naar een ander bestand. Het geheugenverbruik blijft laag tijdens deze bewerking.
    presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Doe dit niet! Er wordt een I/O‑exceptie gegooid omdat het bestand vergrendeld blijft tot het presentatiedobject wordt vrijgegeven.
    //Files.delete(Paths.get(filePath));
} finally {
    presentation.dispose();
}

// Het is hier wel oké. Het bronbestand is niet langer vergrendeld door het presentatiedobject.
Files.delete(Paths.get(filePath));

Externe bronnen beheren

Aspose.Slides biedt de IResourceLoadingCallback interface die je in staat stelt externe bronnen te beheren. De volgende Java‑code laat zien hoe je de IResourceLoadingCallback‑interface gebruikt:

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

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
class ImageLoadingHandler implements IResourceLoadingCallback {
    public int resourceLoading(IResourceLoadingArgs args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Laad een vervangende afbeelding.
                byte[] imageData = Files.readAllBytes(new File("aspose-logo.jpg").toPath());
                args.setData(imageData);
                return ResourceLoadingAction.UserProvided;
            } catch (RuntimeException ex) {
                return ResourceLoadingAction.Skip;
            }  catch (IOException ex) {
                ex.printStackTrace();
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // Stel een vervangende URL in.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction.Default;
        }
        // Sla alle andere afbeeldingen over.
        return ResourceLoadingAction.Skip;
    }
}

Presentaties laden zonder ingebedde binaire objecten

Een PowerPoint‑presentatie kan de volgende typen ingebedde binaire objecten bevatten:

Met behulp van de ILoadOptions.setDeleteEmbeddedBinaryObjects‑methode kun je een presentatie laden zonder enige ingebedde binaire objecten.

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

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

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

FAQ

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

Je krijgt tijdens het laden een parsing-/formaatvalidatie-exceptie. Dergelijke fouten vermelden vaak een ongeldige ZIP-structuur of beschadigde PowerPoint-records.

Wat gebeurt er als de vereiste lettertypen ontbreken bij het openen?

Het bestand wordt geopend, maar later kan rendering/export lettertypen vervangen. Configure font substitutions of add the required fonts aan de runtime-omgeving.

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

Ze worden beschikbaar als presentatieresources. Als media via externe paden worden aangesproken, zorg er dan voor dat die paden toegankelijk zijn in je omgeving; anders kan rendering/export de media weglaten.