Aprire presentazioni in PHP

Introduzione

Aspose.Slides for PHP via Java può caricare presentazioni PowerPoint e OpenDocument da file e flussi. Dopo che una presentazione è stata caricata, è possibile ispezionarne la struttura, modificare le diapositive, gestire le risorse e salvarla nel formato originale o in un altro formato supportato.

Il comportamento di caricamento può essere personalizzato tramite la classe LoadOptions. Ad esempio, è possibile fornire una password di apertura, mantenere i grandi oggetti binari al di fuori della memoria heap di Java, controllare le risorse esterne o omettere i dati binari incorporati.

Aprire presentazioni

Per aprire una presentazione esistente, passare il percorso del file al costruttore Presentation. Disporre della presentazione dopo l’uso affinché i handle dei file, i dati temporanei e le altre risorse vengano rilasciati tempestivamente.

Il seguente esempio PHP mostra come aprire una presentazione e ottenere il numero di diapositive:

use aspose\slides\Presentation;

$presentation = new Presentation("sample.pptx");
try {
    echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
    $presentation->dispose();
}

Aprire presentazioni protette da password

Una password di apertura crittografa il contenuto della presentazione. Per caricare l’intera presentazione, passare la password corretta a LoadOptions::setPassword e fornire le opzioni al costruttore Presentation. Il caricamento fallisce se la password è mancante o errata.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;

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

$presentation = new Presentation("encrypted-presentation.pptx", $loadOptions);
try {
    echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
    $presentation->dispose();
}

Per i flussi di lavoro di rilevamento, convalida e crittografia delle password, vedere Password-Protect Presentations. Se una presentazione crittografata è stata salvata deliberatamente con proprietà documento pubbliche, tali proprietà possono essere lette senza password; vedere Manage Presentation Properties.

Aprire presentazioni di grandi dimensioni

LoadOptions::getBlobManagementOptions restituisce le opzioni che controllano come Aspose.Slides gestisce i large binary objects (BLOB) come immagini, audio e video. È possibile mantenere il file di origine bloccato, consentire file temporanei e limitare la quantità di dati BLOB mantenuti in memoria.

Il seguente codice PHP dimostra il caricamento di una presentazione di grandi dimensioni (ad esempio, 2 GB):

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationLockingBehavior;
use aspose\slides\SaveFormat;

$filePath = "large-presentation.pptx";

$loadOptions = new LoadOptions();
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024);

$presentation = new Presentation($filePath, $loadOptions);
try {
    $presentation->getSlides()->get_Item(0)->setName("Large presentation");
    $presentation->save("large-presentation-copy.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Controllare risorse esterne

LoadOptions::setResourceLoadingCallback accetta un’implementazione dell’interfaccia Java IResourceLoadingCallback tramite PHP/Java Bridge. Il callback può fornire dati di sostituzione, reindirizzare una risorsa, utilizzare il caricatore predefinito o saltare la risorsa. Questo è utile quando le presentazioni contengono immagini esterne che devono essere risolte secondo regole di sicurezza o archiviazione specifiche dell’applicazione.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\ResourceLoadingAction;

class ImageLoadingHandler {
    function resourceLoading($args) {
        $originalUri = strtolower(java_values($args->getOriginalUri()));
        $approvedImagePath = "approved-image.jpg";
        $isJpeg = substr($originalUri, -4) === ".jpg";

        if (!$isJpeg || !file_exists($approvedImagePath)) {
            return ResourceLoadingAction::Skip;
        }

        $imageData = file_get_contents($approvedImagePath);
        if ($imageData === false) {
            echo("The approved replacement image could not be read.\n");
            return ResourceLoadingAction::Skip;
        }

        $args->setData(java_values($imageData));
        return ResourceLoadingAction::UserProvided;
    }
}

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

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

$presentation = new Presentation("presentation-with-external-images.pptx", $loadOptions);
try {
    echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
    $presentation->dispose();
}

Caricare presentazioni senza oggetti binari incorporati

Una presentazione può contenere dati binari incorporati che un’applicazione non necessita o non vuole conservare. Esempi includono:

Impostare LoadOptions::setDeleteEmbeddedBinaryObjects su true per rimuovere questi dati binari durante il caricamento. Salvare la presentazione caricata per conservare il risultato sanitizzato.

Questa opzione riduce l’esposizione a payload incorporati indesiderati, ma non è un sistema completo di rilevamento malware o di sanitizzazione dei contenuti.

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

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

$presentation = new Presentation("presentation-with-embedded-data.pptx", $loadOptions);
try {
    $presentation->save("presentation-without-embedded-data.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

FAQ

Come posso capire che un file è corrotto e non può essere aperto?

Aspose.Slides genera un’eccezione di parsing o di formato durante il caricamento. Gestire tale errore separatamente da quello di password errata in modo che l’applicazione possa segnalare correttamente la causa.

Cosa succede se i caratteri richiesti sono mancanti?

La presentazione può comunque essere caricata, ma il rendering e l’esportazione potrebbero sostituire i caratteri. È possibile configure font substitution o provide custom fonts per rendere l’output più prevedibile.

Il caricamento di una presentazione carica anche i media incorporati?

Audio e video incorporati diventano disponibili attraverso il modello di oggetti della presentazione. Le risorse esterne vengono risolte secondo il comportamento di caricamento delle risorse configurato e potrebbero non essere disponibili se le loro posizioni non sono accessibili.