Aprire presentazioni in JavaScript

Introduzione

Oltre a creare presentazioni PowerPoint da zero, Aspose.Slides consente anche di aprire presentazioni esistenti. Dopo aver caricato una presentazione, è possibile recuperare informazioni al riguardo, modificare il contenuto delle diapositive, aggiungere nuove diapositive, rimuovere quelle esistenti e molto altro.

Aprire presentazioni

Per aprire una presentazione esistente, istanzia la classe Presentation e passa il percorso del file al suo costruttore.

Il seguente esempio JavaScript mostra come aprire una presentazione e ottenerne il conteggio delle diapositive:

// Istanziate la classe Presentation e passate un percorso file al suo costruttore.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    // Stampa il numero totale di diapositive nella presentazione.
    console.log(presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Aprire presentazioni protette da password

Quando è necessario aprire una presentazione protetta da password, passa la password tramite il metodo setPassword della classe LoadOptions per decrittare e caricarla. Il seguente codice JavaScript dimostra questa operazione:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
    // Esegui operazioni sulla presentazione decrittata.
} finally {
    presentation.dispose();
}

Aprire presentazioni di grandi dimensioni

Aspose.Slides fornisce opzioni—in particolare il metodo getBlobManagementOptions nella classe LoadOptions—per aiutarti a caricare presentazioni di grandi dimensioni.

Il seguente codice JavaScript dimostra come caricare una presentazione di grandi dimensioni (ad esempio, 2 GB):

const filePath = "LargePresentation.pptx";

let loadOptions = new aspose.slides.LoadOptions();
// Scegli il comportamento KeepLocked — il file della presentazione rimarrà bloccato per tutta la durata di
// l'istanza Presentation, ma non è necessario caricarlo in memoria o copiarlo in un file temporaneo.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
    // La grande presentazione è stata caricata e può essere usata, mentre il consumo di memoria rimane basso.
    
    // Apporta modifiche alla presentazione.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // Salva la presentazione in un altro file. Il consumo di memoria rimane basso durante questa operazione.
    presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);

    // Non farlo! Verrà sollevata un'eccezione I/O perché il file è bloccato fino a quando l'oggetto presentation non viene eliminato.
    //fs.unlinkSync(filePath);
} finally {
    presentation.dispose();
}

// È OK farlo qui. Il file sorgente non è più bloccato dall'oggetto presentation.
fs.unlinkSync(filePath);

Gestire risorse esterne

Aspose.Slides fornisce l’interfaccia IResourceLoadingCallback che consente di gestire risorse esterne. Il seguente codice JavaScript mostra come utilizzare l’interfaccia IResourceLoadingCallback:

const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
  resourceLoading: function(args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Carica un'immagine sostitutiva.
                const imageData = fs.readFileSync("aspose-logo.jpg");
                args.setData(imageData);
                return aspose.slides.ResourceLoadingAction.UserProvided;
            } catch {
                return aspose.slides.ResourceLoadingAction.Skip;
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // Imposta un URL sostitutivo.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return aspose.slides.ResourceLoadingAction.Default;
        }
        // Ignora tutte le altre immagini.
        return aspose.slides.ResourceLoadingAction.Skip;
      }
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);

Caricare presentazioni senza oggetti binari incorporati

Una presentazione PowerPoint può contenere i seguenti tipi di oggetti binari incorporati:

Utilizzando il metodo LoadOptions.setDeleteEmbeddedBinaryObjects, è possibile caricare una presentazione senza alcun oggetto binario incorporato.

Questo metodo è utile per rimuovere contenuti binari potenzialmente dannosi. Il seguente codice JavaScript dimostra come caricare una presentazione senza alcun contenuto binario incorporato:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
    // Esegui operazioni sulla presentazione.
} finally {
    presentation.dispose();
}

FAQ

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

Ottieni un’eccezione di parsing/validazione del formato durante il caricamento. Tali errori spesso indicano una struttura ZIP non valida o record PowerPoint corrotti.

Cosa succede se i font richiesti sono mancanti durante l’apertura?

Il file verrà aperto, ma in seguito il rendering/export potrebbe sostituire i font. Configure font substitutions o add the required fonts all’ambiente di runtime.

Cosa succede ai media incorporati (video/audio) durante l’apertura?

Diventano disponibili come risorse della presentazione. Se i media sono referenziati tramite percorsi esterni, assicurati che tali percorsi siano accessibili nel tuo ambiente; altrimenti il rendering/export potrebbe omettere i media.