Presentaties openen op Android
Inleiding
Naast het helemaal opnieuw maken van PowerPoint‑presentaties, laat Aspose.Slides u ook bestaande presentaties openen. Nadat u een presentatie geladen hebt, kunt u informatie erover ophalen, de inhoud van dia’s bewerken, nieuwe dia’s toevoegen, bestaande dia’s verwijderen en meer.
Open presentaties
Om een bestaande presentatie te openen, maakt u een exemplaar van de Presentation‑klasse en geeft u het bestandspad door aan de constructor.
Het volgende Java‑voorbeeld laat zien hoe u 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();
}
Openen van met wachtwoord beveiligde presentaties
Wanneer u een met wachtwoord beveiligde presentatie moet openen, geeft u het wachtwoord door aan de setPassword‑methode van de LoadOptions‑klasse om deze te ontsleutelen en te laden. Het volgende Java‑codefragment toont 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();
}
Openen van grote presentaties
Aspose.Slides biedt opties—met name de getBlobManagementOptions‑methode in de LoadOptions‑klasse—om u te helpen grote presentaties te laden.
Het volgende Java‑codefragment toont het laden van een grote presentatie (bijvoorbeeld 2 GB):
final String filePath = "LargePresentation.pptx";
LoadOptions loadOptions = new LoadOptions();
// Kies het KeepLocked-gedrag—het presentiebestand 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 in 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‑exception gegooid omdat het bestand vergrendeld blijft tot het presentatiedobject wordt vrijgegeven.
//Files.delete(Paths.get(filePath));
} finally {
presentation.dispose();
}
// Het is hier OK om het te doen. Het bronbestand is niet langer vergrendeld door het presentatiedobject.
Files.delete(Paths.get(filePath));
Info
Om bepaalde beperkingen bij het werken met streams te omzeilen, kan Aspose.Slides de inhoud van een stream kopiëren. Het laden van een grote presentatie vanuit een stream zorgt ervoor dat de presentatie gekopieerd wordt, wat het laden kan vertragen. Daarom raden we ten zeerste aan om, wanneer u een grote presentatie moet laden, het bestandspad van de presentatie te gebruiken in plaats van een stream.
Bij het maken van een presentatie die grote objecten bevat (video, audio, afbeeldingen met hoge resolutie, enz.), kunt u BLOB management gebruiken om het geheugenverbruik te verminderen.
Beheer van externe bronnen
Aspose.Slides biedt de IResourceLoadingCallback‑interface waarmee u externe bronnen kunt beheren. Het volgende Java‑codefragment laat zien hoe u 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 = getImageBytes("aspose-logo.jpg"); // Gebruik een willekeurige methode om de bytes te verkrijgen
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:
- VBA‑project (toegankelijk via IPresentation.getVbaProject);
- OLE‑object ingebedde data (toegankelijk via IOleEmbeddedDataInfo.getEmbeddedFileData);
- ActiveX‑besturings‑element binaire data (toegankelijk via IControl.getActiveXControlBinary).
Met de ILoadOptions.setDeleteEmbeddedBinaryObjects‑methode kunt u een presentatie laden zonder enige ingebedde binaire objecten.
Deze methode is nuttig om potentieel kwaadaardige binaire inhoud te verwijderen. Het volgende Java‑codefragment laat zien hoe u 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 corrupt is en niet geopend kan worden?
U krijgt tijdens het laden een parse‑/formaatvalidatie‑exceptie. 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 bij renderen/exporteren een substitutie van lettertypen plaatsvinden. Configureer lettertype‑substituties of voeg de vereiste lettertypen toe 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 gerefereerd, zorg er dan voor dat die paden toegankelijk zijn in uw omgeving; anders kan bij renderen/exporteren de media worden weggelaten.