Presentaties opslaan in PHP

Overzicht

Open presentaties in PHP beschrijft hoe je de Presentation‑klasse gebruikt om een presentatie te openen. Dit artikel legt uit hoe je presentaties maakt en opslaat. De Presentation‑klasse bevat de inhoud van een presentatie. Of je nu een presentatie vanaf nul maakt of een bestaande wijzigt, je wilt deze opslaan wanneer je klaar bent. Met Aspose.Slides voor PHP kun je opslaan naar een bestand of stream. Dit artikel legt de verschillende manieren uit om een presentatie op te slaan.

Presentaties opslaan naar bestanden

Sla een presentatie op naar een bestand door de save‑methode van de Presentation‑klasse aan te roepen. Geef de bestandsnaam en het opslagformaat door aan de methode. Het volgende voorbeeld toont hoe je een presentatie opslaat met Aspose.Slides.

// Instantieer de Presentation‑klasse die een presentatiedocument vertegenwoordigt.
$presentation = new Presentation();
try {
    // Voer hier wat werk uit...

    // Sla de presentatie op naar een bestand.
    $presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Presentaties opslaan naar streams

Je kunt een presentatie opslaan naar een stream door een output‑stream door te geven aan de save‑methode van de Presentation‑klasse. Een presentatie kan naar verschillende stream‑typen worden geschreven. In het onderstaande voorbeeld maken we een nieuwe presentatie en slaan we deze op naar een bestands‑stream.

// Instantieer de Presentation‑klasse die een presentatiedocument vertegenwoordigt.
$presentation = new Presentation();
try {
    $fileStream = new Java("java.io.FileOutputStream", "Output.pptx");
    try {
        // Sla de presentatie op naar de stream.
        $presentation->save($fileStream, SaveFormat::Pptx);
    } finally {
        $fileStream->close();
    }
} finally {
    $presentation->dispose();
}

Presentaties opslaan met een vooraf gedefinieerd weergavetype

Aspose.Slides stelt je in staat de initiële weergave die PowerPoint gebruikt wanneer de gegenereerde presentatie wordt geopend, in te stellen via de ViewProperties‑klasse. Gebruik de setLastView‑methode met een waarde uit de ViewType‑enumeratie.

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

Presentaties opslaan in het Strict Office Open XML‑formaat

Aspose.Slides maakt het mogelijk een presentatie op te slaan in het Strict Office Open XML‑formaat. Gebruik de PptxOptions‑klasse en stel bij het opslaan de conformance‑eigenschap in. Als je Conformance.Iso29500_2008_Strict instelt, wordt het uitvoerbestand opgeslagen in het Strict Office Open XML‑formaat.

Het onderstaande voorbeeld maakt een presentatie en slaat die op in het Strict Office Open XML‑formaat.

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

// Instantieer de Presentation‑klasse die een presentatiedocument vertegenwoordigt.
$presentation = new Presentation();
try {
    // Sla de presentatie op in het Strikte Office Open XML‑formaat.
    $presentation->save("StrictOfficeOpenXml.pptx", SaveFormat::Pptx, $options);
} finally {
    $presentation->dispose();
}

Presentaties opslaan in Office Open XML‑formaat in Zip64‑modus

Een Office Open XML‑bestand is een ZIP‑archief dat limieten van 4 GB (2^32 bytes) oplegt aan de ongecomprimeerde grootte van elk bestand, de gecomprimeerde grootte en de totale grootte van het archief, en het beperkt het archief tot 65 535 (2^16−1) bestanden. ZIP64‑formatextensies verhogen deze limieten tot 2^64.

De PptxOptions.setZip64Mode‑methode stelt je in staat te kiezen wanneer ZIP64‑formatextensies te gebruiken bij het opslaan van een Office Open XML‑bestand.

Deze methode kan met de volgende modi worden gebruikt:

  • IfNecessary gebruikt ZIP64‑formatextensies alleen als de presentatie de bovenstaande limieten overschrijdt. Dit is de standaardmodus.
  • Never gebruikt nooit ZIP64‑formatextensies.
  • Always gebruikt altijd ZIP64‑formatextensies.

De volgende code demonstreert hoe je een presentatie als PPTX opslaat met ZIP64‑formatextensies ingeschakeld:

$pptxOptions = new PptxOptions();
$pptxOptions->setZip64Mode(Zip64Mode::Always);

$presentation = new Presentation("Sample.pptx");
try {
    $presentation->save("OutputZip64.pptx", SaveFormat::Pptx, $pptxOptions);
} finally {
    $presentation->dispose();
}

Presentaties opslaan zonder de thumbnail te vernieuwen

De PptxOptions.setRefreshThumbnail‑methode regelt de thumbnail‑generatie bij het opslaan van een presentatie naar PPTX:

  • Als ingesteld op true, wordt de thumbnail tijdens het opslaan vernieuwd. Dit is de standaard.
  • Als ingesteld op false, wordt de huidige thumbnail behouden. Als de presentatie geen thumbnail heeft, wordt er geen gegenereerd.

In de onderstaande code wordt de presentatie opgeslagen naar PPTX zonder de thumbnail te vernieuwen.

$pptxOptions = new PptxOptions();
$pptxOptions->setRefreshThumbnail(false);

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

Voortgangsupdates bij opslaan in percentage

Het rapporteren van voortgang bij opslaan wordt geconfigureerd via de setProgressCallback‑methode op SaveOptions en de subklassen. Geef een Java‑proxy die de IProgressCallback‑interface implementeert; tijdens export ontvangt de callback periodieke percentage‑updates.

De volgende code‑fragmenten tonen hoe je IProgressCallback gebruikt.

class ExportProgressHandler {
    function reporting($progressValue) {
        // Gebruik hier de voortgangspercentage‑waarde.
        $progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
        echo($progress . "% of the file has been converted.");
    }
}

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

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

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

FAQ

Wordt “fast save” (incrementeel opslaan) ondersteund zodat alleen wijzigingen worden weggeschreven?

Nee. Bij elke opslaan wordt het volledige doelbestand aangemaakt; incrementeel “fast save” wordt niet ondersteund.

Is het thread‑safe om dezelfde Presentation‑instantie vanaf meerdere threads op te slaan?

Nee. Een Presentation‑instantie is niet thread‑safe; sla deze op vanuit één thread.

Wat gebeurt er met hyperlinks en extern gelinkte bestanden bij het opslaan?

Hyperlinks worden behouden. Extern gelinkte bestanden (bijv. video’s via relatieve paden) worden niet automatisch gekopieerd — zorg ervoor dat de verwezen paden toegankelijk blijven.

Kan ik documentmetadata (Auteur, Titel, Bedrijf, Datum) instellen/opslaan?

Ja. Standaard documenteigenschappen worden ondersteund en bij het opslaan in het bestand weggeschreven.