Salva presentazioni in JavaScript

Panoramica

Dopo aver creato una presentazione o apri una esistente, utilizza il metodo Presentation.save per scrivere il risultato. Aspose.Slides per Node.js via Java può salvare una presentazione in un file o stream in formati PowerPoint, OpenDocument, PDF e altri formati. Le sezioni seguenti illustrano le operazioni di salvataggio standard e le opzioni disponibili per l’output PPTX.

Salva presentazioni su file

Per salvare una presentazione su file, passa il percorso di destinazione e un valore SaveFormat al metodo Presentation.save. Il valore del formato determina il tipo di file che Aspose.Slides crea.

L’esempio seguente crea una presentazione e la salva come file PPTX:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation();
try {
    // Aggiungi o modifica il contenuto della presentazione qui.

    presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Salva presentazioni nel loro formato originale

Per esempi di rilevamento di file e stream, il comportamento delle presentazioni appena create e la distinzione tra formati di origine e di destinazione, vedi Determina il formato originale della presentazione.

In un’applicazione batch, il formato di input potrebbe non essere noto in anticipo. Dopo aver caricato un file, leggi il suo formato originale dal metodo Presentation.getSourceFormat. Passa il valore SourceFormat risultante a SlideUtil.toSaveFormat per ottenere il corrispondente valore SaveFormat e poi utilizza Presentation.save per scrivere la presentazione modificata.

L’esempio completo seguente elabora tutti i file in una directory di input, aggiorna il titolo e lo salva in una directory di output nel formato da cui è stato caricato:

const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");

const inputDirectory = "Input";
const outputDirectory = "Output";

if (!fs.existsSync(inputDirectory)) {
    console.error("The input directory does not exist.");
} else {
    fs.mkdirSync(outputDirectory, { recursive: true });

    const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
        .filter((entry) => entry.isFile());

    for (const inputFile of inputFiles) {
        const inputPath = path.join(inputDirectory, inputFile.name);
        try {
            const presentation = new aspose.slides.Presentation(inputPath);
            try {
                const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
                presentation.getDocumentProperties().setTitle("Processed by the batch application");

                const outputPath = path.join(outputDirectory, inputFile.name);
                presentation.save(outputPath, saveFormat);
            } finally {
                presentation.dispose();
            }
        } catch (error) {
            console.error(`Cannot process '${inputPath}': ${error.message}`);
        }
    }
}

SlideUtil.toSaveFormat mappa PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP e PowerPoint XML nei rispettivi formati di salvataggio della presentazione. Mappa solo i formati di origine della presentazione; non è destinato a selezionare formati di esportazione come PDF, HTML, TIFF o immagini. Passare un valore SourceFormat non supportato o non valido genera un errore.

I file legacy PPT, PPS e POT utilizzano lo stesso contenitore binario. Quando una presentazione di questo tipo viene caricata da uno stream senza estensione di file, un file PPS o POT può quindi essere identificato come PPT. Se è necessario preservare questi sottotipi legacy, conserva separatamente il nome file originale o i metadati del formato e usali quando scegli il nome file e il formato di destinazione.

Salva presentazioni su stream

Per scrivere una presentazione senza dipendere da un percorso file definitivo, passa uno stream scrivibile e un valore SaveFormat al metodo Presentation.save. Questo approccio è utile quando l’output deve essere restituito da un servizio web, memorizzato in un database o elaborato in memoria.

L’esempio seguente salva una nuova presentazione in uno stream di file:

const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");

const presentation = new aspose.slides.Presentation();
try {
    const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
    try {
        presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

Salva presentazioni con un tipo di vista predefinito

Puoi specificare la vista con cui PowerPoint apre inizialmente una presentazione salvata. Usa il metodo ViewProperties.setLastView con un valore ViewType prima di salvare.

L’esempio seguente configura la vista Slide Master come vista iniziale:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation();
try {
    presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
    presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Salva presentazioni nel formato Strict di Office Open XML

Per creare un file PPTX conforme al profilo Strict di Office Open XML, crea un’istanza PptxOptions e utilizza il suo metodo setConformance con Conformance.Iso29500_2008_Strict. Quindi passa le opzioni al metodo Presentation.save.

const aspose = { slides: require("aspose.slides.via.java") };

const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);

const presentation = new aspose.slides.Presentation();
try {
    presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Salva presentazioni in formato Office Open XML in modalità Zip64

Un archivio ZIP standard limita la dimensione compressa e non compressa di ciascuna voce, la dimensione totale dell’archivio e il numero di voci. Poiché un file PPTX è un archivio ZIP, una presentazione molto grande può superare tali limiti. Le estensioni ZIP64 aumentano i limiti di dimensione e di conteggio delle voci applicabili.

Usa il metodo PptxOptions.setZip64Mode per controllare se Aspose.Slides scrive le estensioni ZIP64:

  • IfNecessary utilizza ZIP64 solo quando la presentazione supera i limiti ZIP standard. Questa è la modalità predefinita.
  • Never disabilita le estensioni ZIP64.
  • Always scrive sempre le estensioni ZIP64.

L’esempio seguente abilita sempre le estensioni ZIP64 per la presentazione di output:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setZip64Mode(aspose.slides.Zip64Mode.Always);

    presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Salva presentazioni in formato Office Open XML con livelli di compressione

Per l’output PPTX, puoi bilanciare la velocità di salvataggio rispetto alle dimensioni del file usando il metodo PptxOptions.setCompressionLevel. La classe CompressionLevel fornisce questi valori:

  • None archivia i dati senza compressione.
  • Level1 fornisce la compressione più rapida e l’output compresso più grande.
  • Level2 fino a Level5 favoriscono progressivamente un output più piccolo a scapito della velocità di salvataggio.
  • Level6 bilancia velocità di salvataggio e dimensione del file. Questo è il livello predefinito.
  • Level7 e Level8 favoriscono ulteriormente un output più piccolo a scapito della velocità di salvataggio.
  • Level9 fornisce la compressione più forte e richiede più tempo di elaborazione.

L’esempio seguente salva una presentazione senza compressione:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setCompressionLevel(aspose.slides.CompressionLevel.None);

    presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

L’esempio seguente utilizza il livello di compressione massimo:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);

    presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Salva presentazioni senza aggiornare la miniatura

Quando una presentazione viene salvata come PPTX, il metodo PptxOptions.setRefreshThumbnail controlla la miniatura del documento:

  • true rigenera la miniatura durante l’operazione di salvataggio. Questo è il valore predefinito.
  • false preserva la miniatura esistente. Se la presentazione non ha una miniatura, Aspose.Slides non ne genera una.

L’esempio seguente salva una presentazione senza aggiornare la sua miniatura:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    const options = new aspose.slides.PptxOptions();
    options.setRefreshThumbnail(false);

    presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Salva aggiornamenti di avanzamento in percentuale

Per monitorare un’operazione di salvataggio, implementa l’interfaccia IProgressCallback con un proxy Java e passa l’implementazione al metodo SaveOptions.setProgressCallback. Aspose.Slides quindi chiama il metodo IProgressCallback.reporting con i valori di avanzamento durante l’esportazione.

L’esempio seguente segnala l’avanzamento di un’esportazione PDF nella console:

const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");

const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
    reporting: function(progressValue) {
        const progress = Math.floor(progressValue);
        console.log(`${progress}% of the file has been converted.`);
    }
});

const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);

const presentation = new aspose.slides.Presentation("input.pptx");
try {
    presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
    presentation.dispose();
}

FAQ

Aspose.Slides supporta il salvataggio incrementale o “fast save”?

No. Ogni operazione di salvataggio scrive un file di output completo invece di aggiornare solo le parti modificate.

Possono più thread salvare la stessa istanza di Presentation?

No. Un’istanza di Presentation non è thread-safe. Accedi e salva ogni istanza da un solo thread alla volta.

Cosa succede a collegamenti ipertestuali e file collegati esternamente quando salvo una presentazione?

Hyperlinks rimangono nella presentazione. Aspose.Slides non copia i file collegati esternamente, quindi la presentazione salvata deve ancora poter accedere alle loro posizioni.

Posso salvare i metadati del documento come autore, titolo, azienda e data di creazione?

Sì. Imposta le appropriate document properties prima di salvare e Aspose.Slides le scrive nel file di output.