Präsentationen in PHP 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 PHP über Java kann eine Präsentation in einer Datei oder einem Stream in PowerPoint-, OpenDocument-, PDF- und anderen Formaten speichern. Die folgenden Abschnitte behandeln die Standard‑Speichervorgänge und die für die PPTX‑Ausgabe verfügbaren Optionen.

Präsentationen in Dateien speichern

Um eine Präsentation in einer Datei zu speichern, übergeben Sie dem Aufruf der Methode Presentation::save den Ausgabepfad und einen SaveFormat‑Wert. Der Formatwert bestimmt den Dateityp, den Aspose.Slides erstellt.

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

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    // Inhalt der Präsentation hinzufügen oder ändern.
    $presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Präsentationen im Originalformat speichern

Für Beispiele zur Erkennung von Dateien und Streams, das Verhalten neu erstellter Präsentationen und die Unterscheidung zwischen Quell‑ und Ausgabeformaten siehe Ermitteln des ursprünglichen Präsentationsformats.

In einer Batch‑Verarbeitungsanwendung 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 dann Presentation::save, um die geänderte Präsentation zu schreiben.

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

use aspose\slides\Presentation;
use aspose\slides\SlideUtil;

$inputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Input";
$outputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Output";

if (!is_dir($outputDirectory) && !mkdir($outputDirectory, 0777, true)) {
    echo("Cannot create the output directory." . PHP_EOL);
}

$inputFiles = is_dir($inputDirectory) ? scandir($inputDirectory) : false;
if ($inputFiles !== false && is_dir($outputDirectory)) {
    foreach ($inputFiles as $fileName) {
        $inputPath = $inputDirectory . DIRECTORY_SEPARATOR . $fileName;
        if (!is_file($inputPath)) {
            continue;
        }

        $presentation = null;
        $presentationLoaded = false;
        try {
            $presentation = new Presentation($inputPath);
            $presentationLoaded = true;
            $saveFormat = SlideUtil::toSaveFormat($presentation->getSourceFormat());
            $presentation->getDocumentProperties()->setTitle("Processed by the batch application");

            $outputPath = $outputDirectory . DIRECTORY_SEPARATOR . $fileName;
            $presentation->save($outputPath, $saveFormat);
        } catch (\Throwable $exception) {
            echo("Cannot process '" . $inputPath . "': " . $exception->getMessage() . PHP_EOL);
        } finally {
            if ($presentationLoaded) {
                $presentation->dispose();
            }
        }
    }
}

SlideUtil::toSaveFormat mappt PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP und PowerPoint‑XML zu den entsprechenden Präsentations‑Speicherformaten. 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‑Wertes führt zu einer IllegalArgumentException.

Legacy‑PPT-, PPS‑ und POT‑Dateien verwenden denselben Binärcontainer. Wenn eine solche Präsentation aus einem Stream ohne Dateierweiterung geladen wird, kann eine PPS‑ oder POT‑Datei daher als PPT identifiziert werden. Wenn das Beibehalten dieser Legacy‑Untertypen erforderlich ist, bewahren Sie den ursprünglichen Dateinamen oder die Format‑Metadaten separat auf und verwenden Sie diese 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 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:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $outputStream = new Java("java.io.FileOutputStream", "Output.pptx");
    try {
        $presentation->save($outputStream, 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 vor dem Speichern die Methode ViewProperties::setLastView mit einem ViewType‑Wert.

Das folgende Beispiel konfiguriert die Folienmaster‑Ansicht als Anfangsansicht:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ViewType;

$presentation = new Presentation();
try {
    $presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
    $presentation->save("SlideMasterView.pptx", 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 PptxOptions::setConformance, wobei Sie Conformance::Iso29500_2008_Strict übergeben. Anschließend übergeben Sie die Optionen an die Methode Presentation::save.

use aspose\slides\Conformance;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$options = new PptxOptions();
$options->setConformance(Conformance::Iso29500_2008_Strict);

$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 Gesamtagröße des Archivs 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 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 immer ZIP64‑Erweiterungen.

Das folgende Beispiel aktiviert ZIP64‑Erweiterungen für die Ausgabepäsentation immer:

use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\Zip64Mode;

$presentation = new Presentation("Sample.pptx");
try {
    $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‑Ausgaben können Sie die Speicher­geschwindigkeit gegen die Dateigröße abwägen, indem Sie die Methode PptxOptions::setCompressionLevel verwenden. Die Klasse CompressionLevel bietet folgende Werte:

  • None speichert Daten ohne Kompression.
  • Level1 bietet die schnellste Kompression und die größte komprimierte Ausgabe.
  • Level2 bis Level5 bevorzugen zunehmend kleinere Ausgaben gegenüber der Speicher­geschwindigkeit.
  • Level6 balanciert Speicher­geschwindigkeit und Dateigröße. Dies ist die Standardstufe.
  • Level7 und Level8 bevorzugen 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:

use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

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

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

Das folgende Beispiel verwendet die maximale Komprimierungsstufe:

use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

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

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

Präsentationen ohne Aktualisieren des Vorschaubildes speichern

Wenn eine Präsentation als PPTX gespeichert wird, steuert die Methode PptxOptions::setRefreshThumbnail 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 ihr Vorschaubild zu aktualisieren:

use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

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

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

Speicherfortschritt in Prozent aktualisieren

Um einen Speicher‑Vorgang zu überwachen, stellen Sie einen Java‑Proxy bereit, der das IProgressCallback‑Interface implementiert, und übergeben Sie den Proxy 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:

use aspose\slides\PdfOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

class ExportProgressHandler {
    function reporting($progressValue) {
        $progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
        echo($progress . "% of the file has been converted." . PHP_EOL);
    }
}

$progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));

$options = new PdfOptions();
$options->setProgressCallback($progressHandler);

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

FAQ

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

Nein. Jeder Speicher‑Vorgang 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 nicht thread‑sicher. Greifen Sie jeweils nur von einem Thread aus auf eine Instanz zu und speichern Sie sie.

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

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

Kann ich Dokumentmetadaten wie Autor, Titel, Firma und Erstellungsdatum speichern?

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