Präsentationen in Java speichern

Übersicht

Nachdem Sie eine Präsentation erstellt oder eine vorhandene geöffnet, verwenden Sie die Presentation.save Methode, um das Ergebnis zu schreiben. Aspose.Slides für Java kann eine Präsentation in einer Datei oder einem Stream in PowerPoint, OpenDocument, PDF und anderen Formaten speichern. Die folgenden Abschnitte behandeln die standardmäßigen Speicheroperationen 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:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation();
try {
    // Präsentationsinhalt hier hinzufügen oder ändern.

    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Präsentationen im Originalformat speichern

Für Beispiele zur Datei‑ und Stream‑Erkennung, das Verhalten neu erstellter Präsentationen und den Unterschied zwischen Quell‑ und Zielformaten siehe Determine the Original Presentation Format.

In einer Batch‑Verarbeitung kann das Eingabeformat im Voraus unbekannt sein. Nachdem Sie eine Datei geladen haben, lesen Sie ihr Originalformat mit der IPresentation.getSourceFormat Methode aus. Übergeben Sie den resultierenden SourceFormat‑Wert an SlideUtil.toSaveFormat, um den entsprechenden SaveFormat‑Wert zu erhalten, und verwenden Sie dann Presentation.save, um die modifizierte Präsentation zu schreiben.

Das folgende vollständige Beispiel verarbeitet jede Datei in einem Eingabeverzeichnis, aktualisiert deren Titel und speichert sie in einem Ausgabeverzeichnis im Format, aus dem sie geladen wurde:

import com.aspose.slides.Presentation;
import com.aspose.slides.SlideUtil;
import java.io.File;

File inputDirectory = new File("Input");
File outputDirectory = new File("Output");

if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
    System.err.println("Cannot create the output directory.");
}

File[] inputFiles = inputDirectory.listFiles(File::isFile);
if (inputFiles != null && outputDirectory.isDirectory()) {
    for (File inputFile : inputFiles) {
        try {
            Presentation presentation = new Presentation(inputFile.getPath());
            try {
                int saveFormat = SlideUtil.toSaveFormat(presentation.getSourceFormat());
                presentation.getDocumentProperties().setTitle("Processed by the batch application");

                File outputFile = new File(outputDirectory, inputFile.getName());
                presentation.save(outputFile.getPath(), saveFormat);
            } finally {
                presentation.dispose();
            }
        } catch (IllegalArgumentException exception) {
            System.err.println("Cannot map the source format of '" + inputFile.getPath() + "': " + exception.getMessage());
        } catch (Exception exception) {
            System.err.println("Cannot process '" + inputFile.getPath() + "': " + exception.getMessage());
        }
    }
}

SlideUtil.toSaveFormat ordnet PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP und PowerPoint‑XML den entsprechenden Präsentations‑Speicherformaten zu. Es mappt nur Präsentations‑Quellformate; es ist nicht dafür gedacht, Exportformate wie PDF, HTML, TIFF oder Bilder auszuwählen. Das Übergeben eines nicht unterstützten oder ungültigen SourceFormat‑Werts führt zu einer IllegalArgumentException.

Legacy‑PPT-, PPS‑ und POT‑Dateien verwenden denselben Binärc‑Container. Wird eine solche Präsentation aus einem Stream ohne Dateierweiterung geladen, kann eine PPS‑ oder POT‑Datei daher als PPT identifiziert werden. Wenn das Beibehalten dieser Legacy‑Subtypen erforderlich ist, behalten Sie den ursprünglichen Dateinamen oder die Format‑Metadaten separat und verwenden Sie sie bei der Auswahl des Ausgabedateinamens und -formats.

Präsentationen in Streams speichern

Um eine Präsentation zu schreiben, ohne einen endgültigen Dateipfad zu benötigen, übergeben Sie einen schreibbaren 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:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import java.io.FileOutputStream;
import java.io.OutputStream;

Presentation presentation = new Presentation();
try {
    OutputStream outputStream = new FileOutputStream("Output.pptx");
    try {
        presentation.save(outputStream, SaveFormat.Pptx);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

Präsentationen mit einem vordefinierten Ansichtstyp speichern

Sie können die Ansicht festlegen, in der PowerPoint eine gespeicherte Präsentation zunächst öffnet. Verwenden Sie die ViewProperties.setLastView Methode mit einem ViewType‑Wert vor dem Speichern.

Das folgende Beispiel konfiguriert die Folienmaster‑Ansicht als Anfangsansicht:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ViewType;

Presentation presentation = new Presentation();
try {
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
    presentation.save("SlideMasterView.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Präsentationen im strengen Office Open XML‑Format speichern

Um eine PPTX‑Datei zu erstellen, die dem Strict‑Profil von Office Open XML entspricht, erzeugen Sie eine PptxOptions Instanz und verwenden Sie deren setConformance Methode mit Conformance.Iso29500_2008_Strict. Übergeben Sie dann die Optionen an die Presentation.save Methode.

import com.aspose.slides.Conformance;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);

Presentation presentation = new Presentation();
try {
    presentation.save("StrictOfficeOpenXml.pptx", 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 gesamte Archivgröß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 geltenden Größen‑ und Eintragsanzahl‑Grenzen.

Verwenden Sie die PptxOptions.setZip64Mode Methode, 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 Standard‑Modus.
  • Never deaktiviert ZIP64‑Erweiterungen.
  • Always schreibt stets ZIP64‑Erweiterungen.

Das folgende Beispiel aktiviert ZIP64‑Erweiterungen für die Ausgabep­rä­sen­ta­ti­on stets:

import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.Zip64Mode;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setZip64Mode(Zip64Mode.Always);

    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Präsentationen im Office Open XML‑Format mit Komprimierungsstufen speichern

Für PPTX‑Ausgabe können Sie die Speichergeschwindigkeit gegen die Dateigröße abwägen, indem Sie die PptxOptions.setCompressionLevel Methode verwenden. Die CompressionLevel Klasse stellt folgende Werte bereit:

  • None speichert Daten ohne Kompression.
  • Level1 bietet die schnellste Kompression und die größte komprimierte Ausgabe.
  • Level2 bis Level5 favorisieren zunehmend kleinere Ausgaben gegenüber der Speicher‑Geschwindigkeit.
  • Level6 balanciert Speicher‑Geschwindigkeit und Dateigröße. Dies ist die Standardstufe.
  • Level7 und Level8 favorisieren weiter kleinere Ausgaben gegenüber der Speicher‑Geschwindigkeit.
  • Level9 bietet die stärkste Kompression und erfordert die meiste Verarbeitungszeit.

Das folgende Beispiel speichert eine Präsentation ohne Kompression:

import com.aspose.slides.CompressionLevel;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.None);

    presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Das folgende Beispiel verwendet die maximale Komprimierungsstufe:

import com.aspose.slides.CompressionLevel;
import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.Level9);

    presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Präsentationen ohne Aktualisierung des Vorschaubildes speichern

Wenn eine Präsentation als PPTX gespeichert wird, steuert die PptxOptions.setRefreshThumbnail Methode das Dokument‑Vorschaubild:

  • true regeneriert das Vorschaubild während des Speichervorgangs. Dies ist der Standardwert.
  • false behält das vorhandene Vorschaubild bei. Hat die Präsentation kein Vorschaubild, erzeugt Aspose.Slides keines.

Das folgende Beispiel speichert eine Präsentation, ohne das Vorschaubild zu aktualisieren:

import com.aspose.slides.PptxOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setRefreshThumbnail(false);

    presentation.save("Output.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Speicherfortschritts‑Updates in Prozent

Um einen Speicher­vorgang zu überwachen, implementieren Sie die IProgressCallback Schnittstelle und übergeben die Implementierung an die ISaveOptions.setProgressCallback Methode. Aspose.Slides ruft dann die IProgressCallback.reporting Methode mit Fortschrittswerten während des Exports auf.

Das folgende Beispiel gibt den Fortschritt eines PDF‑Exports in der Konsole aus:

import com.aspose.slides.IProgressCallback;
import com.aspose.slides.PdfOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

class ExportProgressHandler implements IProgressCallback {
    public void reporting(double progressValue) {
        int progress = (int) progressValue;
        System.out.println(progress + "% of the file has been converted.");
    }
}

PdfOptions options = new PdfOptions();
options.setProgressCallback(new ExportProgressHandler());

Presentation presentation = new Presentation("Sample.pptx");
try {
    presentation.save("Output.pdf", SaveFormat.Pdf, options);
} finally {
    presentation.dispose();
}

FAQ

Unterstützt Aspose.Slides inkrementelles oder „schnelles Speichern“?

Nein. Jeder Speicher­vorgang schreibt eine komplette Ausgabedatei, anstatt nur die geänderten Teile zu aktualisieren.

Können mehrere Threads dieselbe Presentation‑Instanz speichern?

Nein. Eine Presentation‑Instanz ist nicht thread‑sicher. Zugriff und Speicherung jeder Instanz nur von einem Thread gleichzeitig.

Was passiert mit Hyperlinks und extern verknüpften Dateien, wenn ich eine Präsentation speichere?

Hyperlinks bleiben in der Präsentation. Aspose.Slides kopiert keine extern verknüpften Dateien, sodass die gespeicherte Präsentation weiterhin auf deren Speicherorte zugreifen muss.

Kann ich Dokument‑Metadaten wie Autor, Titel, Unternehmen und Erstellungsdatum speichern?

Ja. Setzen Sie die entsprechenden document properties bevor Sie speichern, und Aspose.Slides schreibt sie in die Ausgabedatei.