Ukládání prezentací v PHP

Přehled

Open Presentations in PHP popisuje, jak použít třídu Presentation k otevření prezentace. Tento článek vysvětluje, jak vytvářet a ukládat prezentace. Třída Presentation obsahuje obsah prezentace. Ať už vytváříte prezentaci od nuly nebo upravujete existující, budete ji chtít uložit po dokončení. S Aspose.Slides pro PHP můžete uložit do souboru nebo proudu. Tento článek popisuje různé způsoby ukládání prezentace.

Uložit prezentace do souborů

Uložte prezentaci do souboru voláním metody save třídy Presentation. Předávejte metodě název souboru a formát uložení. Následující příklad ukazuje, jak uložit prezentaci pomocí Aspose.Slides.

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
$presentation = new Presentation();
try {
    // Proveďte zde nějakou práci...

    // Uložte prezentaci do souboru.
    $presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Uložit prezentace do proudů

Můžete uložit prezentaci do proudu předáním výstupního proudu metodě save třídy Presentation. Prezentaci lze zapsat do mnoha typů proudů. V níže uvedeném příkladu vytvoříme novou prezentaci a uložíme ji do souborového proudu.

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
$presentation = new Presentation();
try {
    $fileStream = new Java("java.io.FileOutputStream", "Output.pptx");
    try {
        // Uložte prezentaci do proudu.
        $presentation->save($fileStream, SaveFormat::Pptx);
    } finally {
        $fileStream->close();
    }
} finally {
    $presentation->dispose();
}

Uložit prezentace s předdefinovaným typem zobrazení

Aspose.Slides umožňuje nastavit počáteční zobrazení, které PowerPoint použije při otevření vygenerované prezentace, pomocí třídy ViewProperties. Použijte metodu setLastView s hodnotou z výčtu ViewType.

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

Uložit prezentace ve striktním formátu Office Open XML

Aspose.Slides umožňuje uložit prezentaci ve striktním formátu Office Open XML. Použijte třídu PptxOptions a při ukládání nastavte její vlastnost conformance. Pokud nastavíte Conformance.Iso29500_2008_Strict, výstupní soubor bude uložen ve striktním formátu Office Open XML.

Níže uvedený příklad vytvoří prezentaci a uloží ji ve striktním formátu Office Open XML.

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

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
$presentation = new Presentation();
try {
    // Uložte prezentaci ve striktním formátu Office Open XML.
    $presentation->save("StrictOfficeOpenXml.pptx", SaveFormat::Pptx, $options);
} finally {
    $presentation->dispose();
}

Uložit prezentace ve formátu Office Open XML v režimu Zip64

Soubor Office Open XML je archiv ZIP, který omezuje nekomprimovanou velikost jakéhokoli souboru, komprimovanou velikost a celkovou velikost archivu na 4 GB (2^32 bajtů) a také omezuje počet souborů v archivu na 65 535 (2^16‑1). Rozšíření formátu ZIP64 tato omezení zvyšují na 2^64.

Metoda PptxOptions.setZip64Mode vám umožňuje zvolit, kdy použít rozšíření formátu ZIP64 při ukládání souboru Office Open XML.

Tuto metodu lze použít s následujícími režimy:

  • IfNecessary používá rozšíření ZIP64 pouze pokud prezentace překročí výše uvedená omezení. Toto je výchozí režim.
  • Never nikdy nepoužívá rozšíření ZIP64.
  • Always vždy používá rozšíření ZIP64.

Následující kód ukazuje, jak uložit prezentaci jako PPTX s povolenými rozšířeními formátu ZIP64:

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

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

Uložit prezentace bez obnovování náhledu

Metoda PptxOptions.setRefreshThumbnail řídí generování náhledu při ukládání prezentace do PPTX:

  • Pokud je nastavena na true, náhled se během ukládání obnoví. Toto je výchozí nastavení.
  • Pokud je nastavena na false, aktuální náhled se zachová. Pokud prezentace nemá náhled, žádný se nevygeneruje.

V níže uvedeném kódu je prezentace uložena do PPTX bez obnovení jejího náhledu.

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

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

Ukládat aktualizace postupu v procentech

Zprávy o průběhu ukládání jsou nakonfigurovány pomocí metody setProgressCallback na třídě SaveOptions a jejích podtřídách. Poskytněte Java proxy, která implementuje rozhraní IProgressCallback; během exportu volaná metoda periodicky získává aktualizace v procentech.

Následující úryvky kódu ukazují, jak použít IProgressCallback.

class ExportProgressHandler {
    function reporting($progressValue) {
        // Použijte zde hodnotu procenta postupu.
        $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();
}

Často kladené otázky

Je podporováno „rychlé ukládání“ (inkrementální ukládání), takže se zapisují pouze změny?

Ne. Ukládání vytváří při každém zápisu celý cílový soubor; inkrementální „rychlé ukládání“ není podporováno.

Je bezpečné (thread‑safe) ukládat stejnou instanci Presentation z více vláken?

Ne. Instance Presentation není thread‑safe; uložte ji z jednoho vlákna.

Co se stane s hypertextovými odkazy a externě odkazovanými soubory při ukládání?

Hyperlinky jsou zachovány. Externě odkazované soubory (např. videa pomocí relativních cest) se automaticky nekopírují — ujistěte se, že odkazy na cesty zůstávají přístupné.

Mohu nastavit/uložit metadata dokumentu (Autor, Název, Společnost, Datum)?

Ano. Standardní vlastnosti dokumentu jsou podporovány a při uložení budou zapsány do souboru.