Präsentationen in .NET speichern

Übersicht

Nachdem Sie eine Präsentation erstellt oder eine vorhandene öffnen, verwenden Sie die Methode Presentation.Save, um das Ergebnis zu schreiben. Aspose.Slides für .NET kann eine Präsentation in einer Datei oder einem Stream im 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 Methode Presentation.Save. Der Formatwert bestimmt den Dateityp, den Aspose.Slides erstellt.

Das folgende Beispiel erstellt eine Präsentation und speichert sie als PPTX‑Datei:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

// Add or modify presentation content here.

presentation.Save("Output.pptx", SaveFormat.Pptx);

Präsentationen im Originalformat speichern

Beispiele zur Datei‑ 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. Nachdem Sie eine Datei geladen haben, lesen Sie ihr Originalformat aus der Eigenschaft IPresentation.SourceFormat. Ü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:

using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;

var inputDirectory = "Input";
var outputDirectory = "Output";

Directory.CreateDirectory(outputDirectory);

foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
    try
    {
        using var presentation = new Presentation(inputPath);

        var sourceFormat = presentation.SourceFormat;
        var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);

        presentation.DocumentProperties.Title = "Processed by the batch application";

        var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
        presentation.Save(outputPath, saveFormat);
    }
    catch (ArgumentException exception)
    {
        Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
    }
    catch (Exception exception)
    {
        Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
    }
}

SlideUtil.ToSaveFormat mappt PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP und PowerPoint‑XML auf die entsprechenden Präsentations‑Speicherformate. Es mappt nur Präsentationsquellformate; es ist nicht dazu 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 ArgumentException.

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, behalten Sie den ursprünglichen Dateinamen oder die Format‑Metadaten separat und verwenden Sie diese bei der Auswahl 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 Methode Presentation.Save. Dieser Ansatz ist nützlich, wenn die Ausgabe von einem Webservice zurückgegeben, in einer Datenbank gespeichert oder im Speicher verarbeitet werden muss.

Das folgende Beispiel speichert eine neue Präsentation in einen Dateistream:

using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);

presentation.Save(outputStream, SaveFormat.Pptx);

Präsentationen mit vordefiniertem Ansichtstyp speichern

Sie können die Ansicht festlegen, in der PowerPoint eine gespeicherte Präsentation zunächst öffnet. Setzen Sie vor dem Speichern die Eigenschaft ViewProperties.LastView auf einen ViewType-Wert.

Das folgende Beispiel konfiguriert die Folienmaster‑Ansicht als Anfangsansicht:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);

Präsentationen im Strict‑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 setzen Sie deren Conformance‑Eigenschaft auf Conformance.Iso29500_2008_Strict. Übergeben Sie anschließend die Optionen an die Methode Presentation.Save.

using Aspose.Slides;
using Aspose.Slides.Export;

var options = new PptxOptions
{
    Conformance = Conformance.Iso29500_2008_Strict
};

using var presentation = new Presentation();

presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);

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 Gesamtarichgröß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 entsprechenden Größen‑ und Eintrags‑Grenzwerte.

Verwenden Sie die Eigenschaft PptxOptions.Zip64Mode, 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 stets ZIP64‑Erweiterungen für die Ausgabepäsentation:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    Zip64Mode = Zip64Mode.Always
};

presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);

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 Eigenschaft PptxOptions.CompressionLevel festlegen. Die Aufzählung CompressionLevel bietet folgende Werte:

  • None speichert Daten ohne Kompression.
  • Level1 liefert die schnellste Kompression und die größte komprimierte Ausgabe.
  • Level2 bis Level5 begünstigen zunehmend kleinere Ausgaben zulasten der Speichergeschwindigkeit.
  • Level6 balanciert Speichergeschwindigkeit und Dateigröße. Dies ist die Standardstufe.
  • Level7 und Level8 bevorzugen noch stärker kleinere Ausgaben gegenüber der Speichergeschwindigkeit.
  • Level9 liefert die stärkste Kompression und erfordert die meiste Verarbeitungszeit.

Das folgende Beispiel speichert eine Präsentation ohne Kompression:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.None
};

presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);

Das folgende Beispiel verwendet die maximale Komprimierungsstufe:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.Level9
};

presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);

Präsentationen ohne Aktualisierung des Vorschaubildes speichern

Beim Speichern einer Präsentation als PPTX steuert die Eigenschaft PptxOptions.RefreshThumbnail ihr Dokument‑Vorschaubild:

  • true regeneriert das Vorschaubild während des Speicher‑Vorgangs. Dies ist der Standardwert.
  • false bewahrt das vorhandene Vorschaubild. Hat die Präsentation kein Vorschaubild, erzeugt Aspose.Slides keines.

Das folgende Beispiel speichert eine Präsentation ohne Aktualisierung ihres Vorschaubildes:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    RefreshThumbnail = false
};

presentation.Save("Output.pptx", SaveFormat.Pptx, options);

Speicherfortschritt in Prozent melden

Um einen Speicher‑Vorgang zu überwachen, implementieren Sie das Interface IProgressCallback und weisen Sie die Implementierung der Eigenschaft ISaveOptions.ProgressCallback zu. Aspose.Slides ruft dann während des Exports die Methode IProgressCallback.Reporting mit Fortschrittswerten auf.

Das folgende Beispiel meldet den Fortschritt eines PDF‑Exports in die Konsole:

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

var options = new PdfOptions
{
    ProgressCallback = new ExportProgressHandler()
};

using var presentation = new Presentation("Sample.pptx");

presentation.Save("Output.pdf", SaveFormat.Pdf, options);

class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        var progress = Convert.ToInt32(progressValue);
        Console.WriteLine($"{progress}% of the file has been converted.");
    }
}

FAQ

Unterstützt Aspose.Slides inkrementelles oder „Fast Save“?

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. Greifen Sie pro Instanz nur von einem Thread gleichzeitig zu und speichern Sie sie.

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

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

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

Ja. Setzen Sie vor dem Speichern die entsprechenden Dokument‑Eigenschaften, und Aspose.Slides schreibt sie in die Ausgabedatei.