Präsentationen in JavaScript öffnen
Einführung
Aspose.Slides for Node.js via Java kann PowerPoint‑ und OpenDocument‑Präsentationen aus Dateien und Streams laden. Nachdem eine Präsentation geladen wurde, können Sie deren Struktur untersuchen, Folien bearbeiten, Ressourcen verwalten und sie im ursprünglichen oder einem anderen unterstützten Format speichern.
Das Ladeverhalten kann über die LoadOptions‑Klasse angepasst werden. Beispielsweise können Sie ein Öffnungspasswort angeben, große Binärobjekte außerhalb des Node.js‑Speichers halten, externe Ressourcen steuern oder eingebettete Binärdaten weglassen.
Präsentationen öffnen
Nachdem Sie eine Datei oder einen Stream geladen haben, können Sie das ursprüngliche Präsentationsformat ermitteln um zu entscheiden, wie Ihre Anwendung es verarbeitet.
Um eine vorhandene Präsentation zu öffnen, übergeben Sie ihren Dateipfad an den Presentation‑Konstruktor. Entsorgen Sie die Präsentation nach der Verwendung, damit Datei‑Handles, temporäre Daten und andere Ressourcen umgehend freigegeben werden.
Das folgende JavaScript‑Beispiel zeigt, wie man eine Präsentation öffnet und die Folienanzahl ermittelt:
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("sample.pptx");
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Passwortgeschützte Präsentationen öffnen
Ein Öffnungspasswort verschlüsselt den Inhalt einer Präsentation. Um die komplette Präsentation zu laden, übergeben Sie das korrekte Passwort an LoadOptions.setPassword und geben Sie die Optionen an den Presentation‑Konstruktor weiter. Das Laden schlägt fehl, wenn das Passwort fehlt oder falsch ist.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation("encrypted-presentation.pptx", loadOptions);
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Für Passwort‑Erkennung, -Validierung und Verschlüsselungs‑Workflows siehe Password-Protect Presentations. Wenn eine verschlüsselte Präsentation bewusst mit öffentlichen Dokumenteneigenschaften gespeichert wurde, können diese Eigenschaften ohne Passwort gelesen werden; siehe Manage Presentation Properties.
Große Präsentationen öffnen
LoadOptions.getBlobManagementOptions liefert Optionen, die steuern, wie Aspose.Slides große binäre Objekte wie Bilder, Audio und Video verarbeitet. Sie können die Quelldatei gesperrt halten, temporäre Dateien zulassen und die Menge an BLOB‑Daten, die im Speicher behalten werden, begrenzen.
Der folgende JavaScript‑Code demonstriert das Laden einer großen Präsentation (z. B. 2 GB):
const slides = require("aspose.slides.via.java");
const filePath = "large-presentation.pptx";
const loadOptions = new slides.LoadOptions();
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024);
const presentation = new slides.Presentation(filePath, loadOptions);
try {
presentation.getSlides().get_Item(0).setName("Large presentation");
presentation.save("large-presentation-copy.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Note
Mit PresentationLockingBehavior.KeepLocked bleibt die Quelldatei gesperrt, bis die Präsentationsinstanz freigegeben wird. Verschieben, überschreiben oder löschen Sie die Quelldatei nicht, solange diese Instanz lebt.
Aspose.Slides kann beim Laden den Inhalt eines Eingabestreams kopieren. Bei großen Präsentationen ist ein Dateipfad daher im Allgemeinen effizienter als ein Stream. Siehe Manage BLOBs für weitere Speicher‑ und Speicherverwaltungsoptionen.
Externe Ressourcen steuern
LoadOptions.setResourceLoadingCallback akzeptiert eine Implementierung von IResourceLoadingCallback. Der Callback kann Ersatzdaten bereitstellen, eine Ressource weiterleiten, den Standard‑Lader verwenden oder die Ressource überspringen. Dies ist nützlich, wenn Präsentationen externe Bilder enthalten, die gemäß anwendungsspezifischen Sicherheits‑ oder Speicherregeln aufgelöst werden müssen.
const slides = require("aspose.slides.via.java");
const fs = require("fs");
const java = require("java");
const imageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
const isJpeg = args.getOriginalUri().toLowerCase().endsWith(".jpg");
const approvedImagePath = "approved-image.jpg";
if (!isJpeg || !fs.existsSync(approvedImagePath)) {
return slides.ResourceLoadingAction.Skip;
}
try {
const imageData = fs.readFileSync(approvedImagePath);
args.setData(imageData);
return slides.ResourceLoadingAction.UserProvided;
} catch (error) {
console.error("The approved replacement image could not be read.");
return slides.ResourceLoadingAction.Skip;
}
}
});
const loadOptions = new slides.LoadOptions();
loadOptions.setResourceLoadingCallback(imageLoadingHandler);
const presentation = new slides.Presentation("presentation-with-external-images.pptx", loadOptions);
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Präsentationen ohne eingebettete Binärobjekte laden
Eine Präsentation kann eingebettete Binärdaten enthalten, die eine Anwendung nicht benötigt oder nicht behalten möchte. Beispiele sind:
- VBA‑Projekte, verfügbar über Presentation.getVbaProject;
- eingebettete OLE‑Daten, verfügbar über OleEmbeddedDataInfo.getEmbeddedFileData;
- ActiveX‑Steuerungsdaten, verfügbar über Control.getActiveXControlBinary.
Setze LoadOptions.setDeleteEmbeddedBinaryObjects auf true, um diese Binärdaten beim Laden zu entfernen. Speichere die geladene Präsentation, um das bereinigte Ergebnis zu erhalten.
Diese Option verringert die Gefahr unerwünschter eingebetteter Payloads, ist jedoch kein vollständiges Malware‑Erkennungs‑ oder Inhalts‑Sanitärsystem.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
const presentation = new slides.Presentation("presentation-with-embedded-data.pptx", loadOptions);
try {
presentation.save("presentation-without-embedded-data.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
Wie kann ich erkennen, dass eine Datei beschädigt ist und nicht geöffnet werden kann?
Aspose.Slides wirft beim Laden eine Parsing‑ oder Format‑Ausnahme. Behandeln Sie diesen Fehler getrennt von einem falschen Passwort‑Fehler, damit die Anwendung die Ursache genau melden kann.
Was passiert, wenn erforderliche Schriftarten fehlen?
Die Präsentation kann weiterhin geladen werden, jedoch können beim Rendern und Exportieren Schriftarten substituiert werden. Sie können font substitution konfigurieren oder benutzerdefinierte Schriftarten bereitstellen, um die Ausgabe vorhersehbarer zu machen.
Lädt das Laden einer Präsentation auch deren eingebettete Medien?
Eingebettete Audio‑ und Videodateien werden über das Präsentations‑Objektmodell verfügbar. Externe Ressourcen werden gemäß dem konfigurierten Ressourcen‑Ladeverhalten aufgelöst und können nicht verfügbar sein, wenn ihre Speicherorte nicht erreichbar sind.