Spara presentationer i PHP

Översikt

Efter att du har skapat en presentation eller öppnat en befintlig, använd metoden Presentation::save för att skriva resultatet. Aspose.Slides för PHP via Java kan spara en presentation till en fil eller ström i PowerPoint, OpenDocument, PDF och andra format. Följande avsnitt täcker de standardlagringsoperationerna och de alternativ som finns för PPTX‑utmatning.

Spara presentationer till filer

För att spara en presentation till en fil, skicka filvägen och ett SaveFormat‑värde till metoden Presentation::save. Formatvärdet bestämmer vilken typ av fil som Aspose.Slides skapar.

Följande exempel skapar en presentation och sparar den som en PPTX‑fil:

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

$presentation = new Presentation();
try {
    // Lägg till eller ändra presentationsinnehåll här.

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

Spara presentationer i deras ursprungliga format

För exempel på fil‑ och strömdetektering, beteendet för nyss skapade presentationer och skillnaden mellan käll‑ och utskriftsformat, se Bestäm det ursprungliga presentationsformatet.

I ett batch‑behandlingsprogram kan indataformatet vara okänt i förväg. Efter att en fil har lästs in, läs dess ursprungliga format från metoden Presentation::getSourceFormat. Skicka det resulterande SourceFormat‑värdet till SlideUtil::toSaveFormat för att få motsvarande SaveFormat‑värde, och använd sedan Presentation::save för att skriva den modifierade presentationen.

Följande kompletta exempel bearbetar alla filer i en indatakatalog, uppdaterar dess titel och sparar den till en utdata‑katalog i det format som den laddades i:

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 mappar PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP och PowerPoint XML till deras motsvarande presentations‑sparformat. Den mappar endast presentationskällformat; den är inte avsedd att välja exportformat som PDF, HTML, TIFF eller bilder. Att skicka ett icke‑stött eller ogiltigt SourceFormat‑värde resulterar i ett IllegalArgumentException.

Äldre PPT‑, PPS‑ och POT‑filer använder samma binära behållare. När en sådan presentation laddas från en ström utan filändelse kan en PPS‑ eller POT‑fil därför identifieras som PPT. Om det krävs att bevara dessa äldre undertyper, behåll det ursprungliga filnamnet eller formatmetadata separat och använd dem när du väljer utskriftsfilnamn och -format.

Spara presentationer till strömmar

För att skriva en presentation utan att förlita dig på en slutgiltig filsökväg, skicka en skrivbar ström och ett SaveFormat‑värde till metoden Presentation::save. Detta tillvägagångssätt är användbart när utskriften måste returneras från en webb‑tjänst, lagras i en databas eller bearbetas i minnet.

Följande exempel sparar en ny presentation till en filström:

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();
}

Spara presentationer med en fördefinierad vystyper

Du kan ange den vy som PowerPoint öppnar en sparad presentation i initialt. Använd metoden ViewProperties::setLastView med ett ViewType‑värde innan du sparar.

Följande exempel konfigurerar Slide Master‑vyn som den initiala vyn:

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();
}

Spara presentationer i strikt Office Open XML‑format

För att skapa en PPTX‑fil som följer den strikta profilen av Office Open XML, skapa en instans av PptxOptions och använd dess metod PptxOptions::setConformance med Conformance::Iso29500_2008_Strict. Skicka sedan alternativena till metoden 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();
}

Spara presentationer i Office Open XML‑format i Zip64‑läge

Ett standard‑ZIP‑arkiv begränsar den komprimerade och okomprimerade storleken för varje post, den totala arkivstorleken och antalet poster. Eftersom en PPTX‑fil är ett ZIP‑arkiv kan en mycket stor presentation överskrida dessa gränser. ZIP64‑tillägg höjer de tillämpliga storleks‑ och post‑antal‑gränserna.

Använd metoden PptxOptions::setZip64Mode för att styra om Aspose.Slides skriver ZIP64‑tillägg:

  • IfNecessary använder ZIP64 endast när presentationen överskrider standard‑ZIP‑gränserna. Detta är standardläget.
  • Never inaktiverar ZIP64‑tillägg.
  • Always skriver alltid ZIP64‑tillägg.

Följande exempel aktiverar alltid ZIP64‑tillägg för den utgående presentationen:

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();
}

Spara presentationer i Office Open XML‑format med komprimeringsnivåer

För PPTX‑utmatning kan du balansera sparhastigheten mot filstorleken genom att använda metoden PptxOptions::setCompressionLevel. Klassen CompressionLevel tillhandahåller följande värden:

  • None lagrar data utan kompression.
  • Level1 ger den snabbaste kompressionen och den största komprimerade utdata.
  • Level2 till Level5 favoriserar gradvis mindre utdata framför sparhastighet.
  • Level6 balanserar sparhastighet och filstorlek. Detta är standardnivån.
  • Level7 och Level8 favoriserar ytterligare mindre utdata framför sparhastighet.
  • Level9 ger den starkaste kompressionen och kräver mest bearbetningstid.

Följande exempel sparar en presentation utan 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();
}

Följande exempel använder maximal komprimeringsnivå:

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();
}

Spara presentationer utan att uppdatera miniatyren

När en presentation sparas som PPTX styr metoden PptxOptions::setRefreshThumbnail dess dokumentminiatyr:

  • true regenererar miniatyren under sparoperationen. Detta är standardvärdet.
  • false bevarar den befintliga miniatyren. Om presentationen saknar miniatyr genererar Aspose.Slides ingen.

Följande exempel sparar en presentation utan att uppdatera dess miniatyr:

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();
}

Spara förloppsuppdateringar i procent

För att övervaka en sparoperation, tillhandahåll en Java‑proxy som implementerar gränssnittet IProgressCallback och skicka proxyn till metoden SaveOptions::setProgressCallback. Aspose.Slides anropar sedan metoden IProgressCallback::reporting med förloppsvärden under exporten.

Följande exempel rapporterar förloppet för en PDF‑export till konsolen:

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

Stöder Aspose.Slides inkrementell eller “snabb sparning”?

Nej. Varje sparoperation skriver en komplett utdatafil istället för att endast uppdatera de förändrade delarna.

Kan flera trådar spara samma Presentation‑instans?

Nej. En Presentation‑instans är inte trådsäker. Åtkomst och sparning av varje instans får endast göras från en tråd åt gången.

Vad händer med hyperlänkar och externt länkade filer när jag sparar en presentation?

Hyperlinks förblir i presentationen. Aspose.Slides kopierar inte externt länkade filer, så den sparade presentationen måste fortfarande kunna nå deras platser.

Kan jag spara dokumentmetadata som författare, titel, företag och skapelsedatum?

Ja. Ställ in lämpliga dokumentegenskaper innan sparning, så skriver Aspose.Slides dem till utdatafilen.