Präsentationen auf Android öffnen
Übersicht
Neben dem Erstellen von PowerPoint-Präsentationen von Grund auf ermöglicht Aspose.Slides auch das Öffnen vorhandener Präsentationen. Nachdem Sie eine Präsentation geladen haben, können Sie Informationen darüber abrufen, Folieninhalte bearbeiten, neue Folien hinzufügen, bestehende entfernen und vieles mehr.
Präsentationen öffnen
Um eine vorhandene Präsentation zu öffnen, instanziieren Sie die Presentation‑Klasse und übergeben den Dateipfad an deren Konstruktor.
Das folgende Java‑Beispiel zeigt, wie Sie eine Präsentation öffnen und die Folienanzahl ermitteln:
// Instanziieren Sie die Presentation-Klasse und übergeben Sie einen Dateipfad an deren Konstruktor.
Presentation presentation = new Presentation("Sample.pptx");
try {
// Geben Sie die Gesamtzahl der Folien in der Präsentation aus.
System.out.println(presentation.getSlides().size());
} finally {
presentation.dispose();
}
Passwortgeschützte Präsentationen öffnen
Wenn Sie eine passwortgeschützte Präsentation öffnen müssen, übergeben Sie das Passwort über die setPassword‑Methode der LoadOptions‑Klasse, um sie zu entschlüsseln und zu laden. Der folgende Java‑Code demonstriert diesen Vorgang:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
Presentation presentation = new Presentation("Sample.pptx", loadOptions);
try {
// Vorgänge an der entschlüsselten Präsentation ausführen.
} finally {
presentation.dispose();
}
Große Präsentationen öffnen
Aspose.Slides bietet Optionen – insbesondere die getBlobManagementOptions‑Methode in der LoadOptions‑Klasse – um das Laden großer Präsentationen zu unterstützen.
Der folgende Java‑Code demonstriert das Laden einer großen Präsentation (z. B. 2 GB):
final String filePath = "LargePresentation.pptx";
LoadOptions loadOptions = new LoadOptions();
// Wählen Sie das KeepLocked-Verhalten – die Präsentationsdatei bleibt für die Lebensdauer der
// Presentation-Instanz gesperrt, muss jedoch nicht in den Speicher geladen oder in eine temporäre Datei kopiert werden.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB
Presentation presentation = new Presentation(filePath, loadOptions);
try {
// Die große Präsentation wurde geladen und kann verwendet werden, während der Speicherverbrauch niedrig bleibt.
// Änderungen an der Präsentation vornehmen.
presentation.getSlides().get_Item(0).setName("Large presentation");
// Die Präsentation in einer anderen Datei speichern. Der Speicherverbrauch bleibt während dieses Vorgangs niedrig.
presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);
// Nicht tun! Eine I/O-Ausnahme wird ausgelöst, weil die Datei gesperrt ist, bis das Präsentationsobjekt freigegeben wird.
//Files.delete(Paths.get(filePath));
} finally {
presentation.dispose();
}
// Es ist hier in Ordnung. Die Quelldatei ist nicht mehr durch das Präsentationsobjekt gesperrt.
Files.delete(Paths.get(filePath));
Info
Um bestimmte Einschränkungen beim Arbeiten mit Streams zu umgehen, kann Aspose.Slides den Inhalt eines Streams kopieren. Das Laden einer großen Präsentation aus einem Stream führt dazu, dass die Präsentation kopiert wird, was das Laden verlangsamen kann. Deshalb empfehlen wir, beim Laden großer Präsentationen unbedingt den Dateipfad der Präsentation statt eines Streams zu verwenden.
Wenn Sie eine Präsentation erstellen, die große Objekte (Video, Audio, hochauflösende Bilder usw.) enthält, können Sie das BLOB‑Management nutzen, um den Speicherverbrauch zu reduzieren.
Externe Ressourcen steuern
Aspose.Slides stellt die Schnittstelle IResourceLoadingCallback bereit, mit der Sie externe Ressourcen verwalten können. Der folgende Java‑Code zeigt, wie Sie das IResourceLoadingCallback‑Interface verwenden:
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 {
// Lade ein Ersatzbild.
byte[] imageData = getImageBytes("aspose-logo.jpg"); // Verwenden Sie eine beliebige Methode, um die Bytes zu erhalten
args.setData(imageData);
return ResourceLoadingAction.UserProvided;
} catch (RuntimeException ex) {
return ResourceLoadingAction.Skip;
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (args.getOriginalUri().endsWith(".png")) {
// Setze eine Ersatz-URL.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return ResourceLoadingAction.Default;
}
// Alle anderen Bilder überspringen.
return ResourceLoadingAction.Skip;
}
}
Präsentationen ohne eingebettete Binärobjekte laden
Eine PowerPoint‑Präsentation kann folgende Arten eingebetteter Binärobjekte enthalten:
- VBA‑Projekt (zugänglich über IPresentation.getVbaProject);
- OLE‑Objekt‑eingebettete Daten (zugänglich über IOleEmbeddedDataInfo.getEmbeddedFileData);
- ActiveX‑Steuerungs‑Binärdaten (zugänglich über IControl.getActiveXControlBinary).
Durch die Methode ILoadOptions.setDeleteEmbeddedBinaryObjects können Sie eine Präsentation ohne eingebettete Binärobjekte laden.
Diese Methode ist nützlich, um potenziell schädliche Binärinhalte zu entfernen. Der folgende Java‑Code demonstriert das Laden einer Präsentation ohne eingebettete Binärinhalte:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
Presentation presentation = new Presentation("malware.ppt", loadOptions);
try {
// Vorgänge an der Präsentation ausführen.
} finally {
presentation.dispose();
}
FAQ
Wie kann ich erkennen, dass eine Datei beschädigt ist und nicht geöffnet werden kann?
Während des Ladens erhalten Sie eine Parsing‑/Format‑Validierungs‑Ausnahme. Solche Fehler erwähnen häufig eine ungültige ZIP‑Struktur oder beschädigte PowerPoint‑Einträge.
Was passiert, wenn beim Öffnen erforderliche Schriftarten fehlen?
Die Datei wird geöffnet, aber beim späteren Rendern/Exportieren können Schriftarten substituiert werden. Schriftart‑Substitutionen konfigurieren oder die benötigten Schriftarten hinzufügen in der Laufzeitumgebung.
Wie wird mit eingebetteten Medien (Video/Audio) beim Öffnen umgegangen?
Sie werden als Präsentations‑Ressourcen verfügbar. Wenn Medien über externe Pfade referenziert werden, stellen Sie sicher, dass diese Pfade in Ihrer Umgebung zugänglich sind; andernfalls kann das Rendern/Exportieren die Medien weglassen.