Präsentationen in JavaScript speichern
Übersicht
Nachdem Sie eine Präsentation erstellt oder eine vorhandene öffnen, verwenden Sie die Presentation.save Methode, um das Ergebnis zu schreiben. Aspose.Slides für Node.js via Java kann eine Präsentation in eine Datei oder einen Stream in PowerPoint-, OpenDocument-, PDF- und anderen Formaten speichern. Die folgenden Abschnitte behandeln die Standard‑Speichervorgänge und die für PPTX‑Ausgabe verfügbaren Optionen.
Präsentationen in Dateien speichern
Um eine Präsentation in einer Datei zu speichern, übergeben Sie den Ausgabepfad und einen SaveFormat‑Wert an die Presentation.save‑Methode. Der Formatwert bestimmt den Dateityp, den Aspose.Slides erstellt.
Das folgende Beispiel erstellt eine Präsentation und speichert sie als PPTX‑Datei:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
// Präsentationsinhalte hier hinzufügen oder ändern.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Präsentationen im Originalformat speichern
Beispiele zur Date- und Stream‑Erkennung, zum Verhalten neu erstellter Präsentationen und zum Unterschied zwischen Quell‑ und Ausgabeformaten finden Sie unter Determine the Original Presentation Format.
In einer Stapelverarbeitungs‑Anwendung ist das Eingabeformat möglicherweise nicht im Voraus bekannt. Nach dem Laden einer Datei lesen Sie das Originalformat über die Methode Presentation.getSourceFormat. Übergeben Sie den resultierenden SourceFormat‑Wert an SlideUtil.toSaveFormat, um den entsprechenden SaveFormat‑Wert zu erhalten, und verwenden Sie anschließend Presentation.save, um die geänderte Präsentation zu schreiben.
Das folgende vollständige Beispiel verarbeitet jede Datei in einem Eingabeverzeichnis, aktualisiert deren Titel und speichert sie in ein Ausgabeverzeichnis im Format, aus dem sie geladen wurde:
const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");
const inputDirectory = "Input";
const outputDirectory = "Output";
if (!fs.existsSync(inputDirectory)) {
console.error("The input directory does not exist.");
} else {
fs.mkdirSync(outputDirectory, { recursive: true });
const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
.filter((entry) => entry.isFile());
for (const inputFile of inputFiles) {
const inputPath = path.join(inputDirectory, inputFile.name);
try {
const presentation = new aspose.slides.Presentation(inputPath);
try {
const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
presentation.getDocumentProperties().setTitle("Processed by the batch application");
const outputPath = path.join(outputDirectory, inputFile.name);
presentation.save(outputPath, saveFormat);
} finally {
presentation.dispose();
}
} catch (error) {
console.error(`Cannot process '${inputPath}': ${error.message}`);
}
}
}
SlideUtil.toSaveFormat ordnet PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP und PowerPoint‑XML den jeweiligen Präsentations‑Speicherformaten zu. Es mappt nur Präsentations‑Quellformate; es ist nicht dazu gedacht, Exportformate wie PDF, HTML, TIFF oder Bilder auszuwählen. Die Übergabe eines nicht unterstützten oder ungültigen SourceFormat‑Werts führt zu einem Fehler.
Legacy‑PPT-, PPS‑ und POT‑Dateien verwenden denselben Binärcontainer. Wird eine solche Präsentation aus einem Stream ohne Dateierweiterung geladen, kann eine PPS‑ oder POT‑Datei daher als PPT identifiziert werden. Wenn die Beibehaltung dieser Legacy‑Subtypen erforderlich ist, bewahren Sie den ursprünglichen Dateinamen oder die Format‑Metadaten separat auf und verwenden Sie diese bei der Wahl des Ausgabedateinamens und -formats.
Präsentationen in Streams speichern
Um eine Präsentation zu schreiben, ohne sich auf einen endgültigen Dateipfad zu verlassen, übergeben Sie einen beschreibbaren Stream und einen SaveFormat‑Wert an die Presentation.save‑Methode. Dieser Ansatz ist nützlich, wenn die Ausgabe von einem Web‑Service zurückgegeben, in einer Datenbank gespeichert oder im Speicher verarbeitet werden muss.
Das folgende Beispiel speichert eine neue Präsentation in einen Dateistream:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
try {
presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
Präsentationen mit vordefiniertem Ansichtstyp speichern
Sie können die Ansicht festlegen, in der PowerPoint eine gespeicherte Präsentation zunächst öffnet. Verwenden Sie die Methode ViewProperties.setLastView mit einem ViewType‑Wert vor dem Speichern.
Das folgende Beispiel konfiguriert die Folienmaster‑Ansicht als Anfangsansicht:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Präsentationen im strikten Office Open XML‑Format speichern
Um eine PPTX‑Datei zu erstellen, die dem Strict‑Profil von Office Open XML entspricht, erzeugen Sie eine Instanz von PptxOptions und verwenden deren Methode setConformance mit Conformance.Iso29500_2008_Strict. Anschließend übergeben Sie die Optionen an die Presentation.save‑Methode.
const aspose = { slides: require("aspose.slides.via.java") };
const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
const presentation = new aspose.slides.Presentation();
try {
presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Präsentationen im Office Open XML‑Format im Zip64‑Modus speichern
Ein Standard‑ZIP‑Archiv begrenzt die komprimierte und unkomprimierte Größe jedes Eintrags, die Gesamtarchivgröße und die Anzahl der Einträge. Da eine PPTX‑Datei ein ZIP‑Archiv ist, kann eine sehr große Präsentation diese Grenzen überschreiten. ZIP64‑Erweiterungen erhöhen die jeweiligen Größen‑ und Eintragsanzahl‑Grenzen.
Verwenden Sie die Methode PptxOptions.setZip64Mode, um zu steuern, ob Aspose.Slides ZIP64‑Erweiterungen schreibt:
- IfNecessary verwendet ZIP64 nur, wenn die Präsentation die Standard‑ZIP‑Grenzen überschreitet. Dies ist der Standardmodus.
- Never deaktiviert ZIP64‑Erweiterungen.
- Always schreibt stets ZIP64‑Erweiterungen.
Das folgende Beispiel aktiviert ZIP64‑Erweiterungen für die Ausgabepäsentation stets:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setZip64Mode(aspose.slides.Zip64Mode.Always);
presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Warning
Wenn Zip64Mode.Never verwendet wird und die Präsentation nicht in die Standard‑ZIP‑Grenzen passt, wirft der Speichervorgang eine PptxException.Präsentationen im Office Open XML‑Format mit Kompressionsstufen speichern
Für PPTX‑Ausgaben können Sie die Speichergeschwindigkeit gegenüber der Dateigröße ausbalancieren, indem Sie die Methode PptxOptions.setCompressionLevel verwenden. Die Klasse CompressionLevel stellt folgende Werte bereit:
- None speichert Daten ohne Kompression.
- Level1 liefert die schnellste Kompression und das größte komprimierte Ergebnis.
- Level2 bis Level5 bevorzugen zunehmend kleinere Ausgaben gegenüber der Speichergeschwindigkeit.
- Level6 balanciert Speichergeschwindigkeit und Dateigröße. Dies ist die Standardstufe.
- Level7 und Level8 bevorzugen noch stärker kleinere Ausgaben gegenüber der Geschwindigkeit.
- Level9 bietet die stärkste Kompression und erfordert die meiste Verarbeitungszeit.
Das folgende Beispiel speichert eine Präsentation ohne Kompression:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.None);
presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Das folgende Beispiel verwendet die maximale Kompressionsstufe:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);
presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Präsentationen ohne Aktualisierung des Thumbnails speichern
Wenn eine Präsentation als PPTX gespeichert wird, steuert die Methode PptxOptions.setRefreshThumbnail das Dokument‑Thumbnail:
trueregeneriert das Thumbnail während des Speichervorgangs. Dies ist der Standardwert.falsebewahrt das vorhandene Thumbnail. Hat die Präsentation kein Thumbnail, erzeugt Aspose.Slides keines.
Das folgende Beispiel speichert eine Präsentation, ohne ihr Thumbnail zu aktualisieren:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setRefreshThumbnail(false);
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Note
Das Deaktivieren der Thumbnail‑Aktualisierung kann die zum Speichern einer PPTX‑Datei benötigte Zeit verkürzen.Speicher‑Fortschritts‑Updates in Prozent
Um einen Speichervorgang zu überwachen, implementieren Sie das IProgressCallback‑Interface mit einem Java‑Proxy und übergeben die Implementierung an die Methode SaveOptions.setProgressCallback. Aspose.Slides ruft dann die Methode IProgressCallback.reporting mit Fortschrittswerten während des Exports auf.
Das folgende Beispiel meldet den Fortschritt eines PDF‑Exports in der Konsole:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);
const presentation = new aspose.slides.Presentation("input.pptx");
try {
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
presentation.dispose();
}
Note
Aspose bietet einen kostenlosen PowerPoint Splitter an, der mit der Aspose.Slides‑API erstellt wurde. Er speichert ausgewählte Folien einer Präsentation als separate PPT‑ oder PPTX‑Dateien.FAQ
Unterstützt Aspose.Slides inkrementelles oder „Fast Save“?
Nein. Jeder Speichervorgang schreibt eine vollständige Ausgabedatei, anstatt nur die geänderten Teile zu aktualisieren.
Können mehrere Threads dieselbe Presentation‑Instanz speichern?
Nein. Eine Presentation‑Instanz ist is not thread-safe. Greifen Sie auf jede Instanz zu und speichern Sie sie jeweils nur von einem Thread.
Was passiert mit Hyperlinks und extern verlinkten Dateien, wenn ich eine Präsentation speichere?
Hyperlinks bleiben in der Präsentation erhalten. Aspose.Slides kopiert keine extern verlinkten Dateien, sodass die gespeicherte Präsentation weiterhin auf deren Speicherorte zugreifen muss.
Kann ich Dokument‑Metadaten wie Autor, Titel, Firma und Erstellungsdatum speichern?
Ja. Setzen Sie vor dem Speichern die entsprechenden document properties, und Aspose.Slides schreibt sie in die Ausgabedatei.