Öppna presentationer i PHP

Introduktion

Förutom att skapa PowerPoint‑presentationer från grunden låter Aspose.Slides dig även öppna befintliga presentationer. När en presentation har lästs in kan du hämta information om den, redigera bildinnehåll, lägga till nya bilder, ta bort befintliga och mycket mer.

Öppna presentationer

För att öppna en befintlig presentation, skapa en instans av klassen Presentation och skicka filvägen till dess konstruktor.

Följande PHP‑exempel visar hur du öppnar en presentation och får antalet bilder:

// Instansiera Presentation-klassen och skicka en filsökväg till dess konstruktor.
$presentation = new Presentation("Sample.pptx");
try {
    // Skriv ut det totala antalet bilder i presentationen.
    echo($presentation->getSlides()->size());
} finally {
    $presentation->dispose();
}

Öppna lösenordsskyddade presentationer

När du behöver öppna en lösenordsskyddad presentation, ange lösenordet via metoden setPassword i klassen LoadOptions för att dekryptera och läsa in den. Följande PHP‑kod demonstrerar denna operation:

$loadOptions = new LoadOptions();
$loadOptions->setPassword("YOUR_PASSWORD");

$presentation = new Presentation("Sample.pptx", $loadOptions);
try {
    // Utför operationer på den dekrypterade presentationen.
} finally {
    $presentation->dispose();
}

Öppna stora presentationer

Aspose.Slides erbjuder alternativ – särskilt metoden getBlobManagementOptions i klassen LoadOptions – för att hjälpa dig läsa in stora presentationer.

Följande PHP‑kod demonstrerar inläsning av en stor presentation (t.ex. 2 GB):

$filePath = "LargePresentation.pptx";

$loadOptions = new LoadOptions();
// Välj KeepLocked-beteendet - presentationsfilen förblir låst under hela
// Presentation-instansen, men den behöver inte läsas in i minnet eller kopieras till en temporär fil.
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

$presentation = new Presentation($filePath, $loadOptions);
try {
    // Den stora presentationen har lästs in och kan användas, medan minnesförbrukningen förblir låg.

    // Gör ändringar i presentationen.
    $presentation->getSlides()->get_Item(0)->setName("Very large presentation");

    // Spara presentationen till en annan fil. Minnesförbrukningen förblir låg under denna operation.
    $presentation->save("LargePresentation-copy.pptx", SaveFormat::Pptx);
	
	// Gör inte detta! Ett I/O-undantag kommer att kastas eftersom filen är låst tills presentationsobjektet har frigjorts.
	//unlink($filePath);
} finally {
    $presentation->dispose();
}
// Det är okej att göra det här. Källfilen är inte längre låst av presentationsobjektet.
unlink($filePath);

Kontrollera externa resurser

Aspose.Slides tillhandahåller gränssnittet IResourceLoadingCallback som låter dig hantera externa resurser. Följande PHP‑kod visar hur du använder gränssnittet IResourceLoadingCallback:

class ImageLoadingHandler {
    function resourceLoading($args) {
        if (java_values($args->getOriginalUri()->endsWith(".jpg"))) {
            // Läs in en ersättningsbild.
			$bytes = file_get_contents("aspose-logo.jpg");
			$javaByteArray = java_values($bytes);
            $args->setData($javaByteArray);
            return ResourceLoadingAction::UserProvided;
        } else if (java_values($args->getOriginalUri()->endsWith(".png"))) {
            // Ange en ersättnings-URL.
            $args->setUri("http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }
        // Hoppa över alla andra bilder.
        return ResourceLoadingAction::Skip;
    }
}

$loadingHandler = java_closure(new ImageLoadingHandler(), null, java("com.aspose.slides.IResourceLoadingCallback"));

$loadOptions = new LoadOptions();
$loadOptions->setResourceLoadingCallback($loadingHandler);

$presentation = new Presentation("Sample.pptx", $loadOptions);

Läs in presentationer utan inbäddade binära objekt

En PowerPoint‑presentation kan innehålla följande typer av inbäddade binära objekt:

Genom att använda metoden LoadOptions.setDeleteEmbeddedBinaryObjects kan du läsa in en presentation utan några inbäddade binära objekt.

Denna metod är användbar för att ta bort potentiellt skadligt binärt innehåll. Följande PHP‑kod demonstrerar hur du läser in en presentation utan inbäddat binärt innehåll:

$loadOptions = new LoadOptions();
$loadOptions->setDeleteEmbeddedBinaryObjects(true);

$presentation = new Presentation("malware.ppt", $loadOptions);
try {
    // Utför operationer på presentationen.
} finally {
    $presentation->dispose();
}

Vanliga frågor

Hur kan jag avgöra att en fil är korrupt och inte kan öppnas?

Du får ett undantag för parsning/formatvalidering under inläsning. Sådana fel nämner ofta en ogiltig ZIP‑struktur eller trasiga PowerPoint‑poster.

Vad händer om nödvändiga teckensnitt saknas vid öppning?

Filen öppnas, men senare rendering/export kan ersätta teckensnitten. Konfigurera teckensnittsersättningar eller lägg till de nödvändiga teckensnitten i körmiljön.

Hur hanteras inbäddade medier (video/ljud) vid öppning?

De blir tillgängliga som presentationsresurser. Om medier refereras via externa sökvägar, se till att dessa sökvägar är åtkomliga i din miljö; annars kan rendering/export utelämna dem.