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);
Info
Per aggirare alcune limitazioni quando si lavora con gli stream, Aspose.Slides può copiare il contenuto di uno stream. Caricare una presentazione di grandi dimensioni da uno stream comporta la copia della presentazione e può rallentare il caricamento. Pertanto, quando è necessario caricare una presentazione di grandi dimensioni, consigliamo vivamente di utilizzare il percorso del file della presentazione anziché uno stream.
Quando si crea una presentazione che contiene oggetti di grandi dimensioni (video, audio, immagini ad alta risoluzione, ecc.), è possibile utilizzare la BLOB management per ridurre il consumo di memoria.
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:
- Progetto VBA (accessibile tramite Presentation.getVbaProject);
- Dati incorporati di oggetti OLE (accessibili tramite OleEmbeddedDataInfo.getEmbeddedFileData);
- Dati binari di controlli ActiveX (accessibili tramite Control.getActiveXControlBinary).
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.