Presentaties opslaan in JavaScript

Overzicht

Nadat u een presentatie heeft gemaakt of een bestaande openen, gebruikt u de Presentation.save methode om het resultaat te schrijven. Aspose.Slides for Node.js via Java kan een presentatie opslaan naar een bestand of stream in PowerPoint, OpenDocument, PDF en andere formaten. De volgende secties behandelen de standaard opslaan‑bewerkingen en de opties die beschikbaar zijn voor PPTX‑output.

Presentaties opslaan naar bestanden

Om een presentatie op te slaan naar een bestand, geeft u het uitvoerpad en een SaveFormat waarde door aan de Presentation.save methode. De formatwaarde bepaalt het type bestand dat Aspose.Slides maakt.

Het volgende voorbeeld maakt een presentatie en slaat deze op als een PPTX‑bestand:

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

const presentation = new aspose.slides.Presentation();
try {
    // Voeg presentatiedata toe of wijzig de inhoud hier.

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

Presentaties opslaan in hun oorspronkelijke formaat

Voor voorbeelden van bestand‑ en streamdetectie, het gedrag van nieuw aangemaakte presentaties, en het onderscheid tussen bron‑ en uitvoerformaten, zie Bepaal het oorspronkelijke presentatie‑formaat.

In een batch‑verwerkingsapplicatie is het invoerformaat mogelijk niet van tevoren bekend. Na het laden van een bestand, leest u het oorspronkelijke formaat via de Presentation.getSourceFormat methode. Geef de verkregen SourceFormat waarde door aan SlideUtil.toSaveFormat om de bijbehorende SaveFormat waarde te verkrijgen, en gebruik vervolgens Presentation.save om de gewijzigde presentatie te schrijven.

Het volgende volledige voorbeeld verwerkt elk bestand in een invoermap, werkt de titel bij, en slaat het op in een uitvoermap in het formaat waarin het werd geladen:

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 zet PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP en PowerPoint‑XML om naar hun overeenkomstige presentatie‑opslaan‑formaten. Het zet alleen presentaties bronformaten om; het is niet bedoeld om exportformaten zoals PDF, HTML, TIFF of afbeeldingen te selecteren. Het doorgeven van een niet‑ondersteunde of ongeldige SourceFormat waarde leidt tot een fout.

Legacy‑PPT, PPS en POT‑bestanden gebruiken dezelfde binaire container. Wanneer zo’n presentatie wordt geladen uit een stream zonder bestandsextensie, kan een PPS‑ of POT‑bestand daardoor als PPT worden geïdentificeerd. Als het behouden van deze legacy‑subtypes vereist is, bewaar dan de oorspronkelijke bestandsnaam of format‑metadata apart en gebruik deze bij het kiezen van de uitvoer‑bestandsnaam en -formaat.

Presentaties opslaan naar streams

Om een presentatie te schrijven zonder te vertrouwen op een definitief bestandspad, geeft u een schrijfbare stream en een SaveFormat waarde door aan de Presentation.save methode. Deze aanpak is handig wanneer de uitvoer moet worden geretourneerd vanuit een webservice, opgeslagen in een database, of in het geheugen moet worden verwerkt.

Het volgende voorbeeld slaat een nieuwe presentatie op naar een bestands‑stream:

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();
}

Presentaties opslaan met een vooraf gedefinieerd weergavetype

U kunt de weergave specificeren waarin PowerPoint een opgeslagen presentatie aanvankelijk opent. Gebruik de ViewProperties.setLastView methode met een ViewType waarde vóór het opslaan.

Het volgende voorbeeld stelt Slide Master‑weergave in als de initiële weergave:

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();
}

Presentaties opslaan in het Strict Office Open XML‑formaat

Om een PPTX‑bestand te maken dat voldoet aan het Strict‑profiel van Office Open XML, maakt u een PptxOptions instantie en gebruikt u de setConformance methode met Conformance.Iso29500_2008_Strict. Geef vervolgens de opties door aan de Presentation.save methode.

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();
}

Presentaties opslaan in Office Open XML‑formaat in Zip64‑modus

Een standaard ZIP‑archief beperkt de gecomprimeerde en ongecomprimeerde grootte van elk item, de totale archiefgrootte en het aantal items. Omdat een PPTX‑bestand een ZIP‑archief is, kan een zeer grote presentatie die limieten overschrijden. ZIP64‑extensies verhogen de toepasselijke grootte‑ en item‑aantallimieten.

  • IfNecessary gebruikt ZIP64 alleen wanneer de presentatie de standaard ZIP‑limieten overschrijdt. Dit is de standaardmodus.
  • Never schakelt ZIP64‑extensies uit.
  • Always schrijft altijd ZIP64‑extensies.

Het volgende voorbeeld schakelt ZIP64‑extensies altijd in voor de uitvoerpresentatie:

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();
}

Presentaties opslaan in Office Open XML‑formaat met compressieniveaus

Voor PPTX‑output kunt u de opslagsnelheid afwegen tegen de bestandsgrootte door de PptxOptions.setCompressionLevel methode te gebruiken. De CompressionLevel klasse biedt deze waarden:

  • None slaat gegevens op zonder compressie.
  • Level1 biedt de snelste compressie en de grootste gecomprimeerde uitvoer.
  • Level2 geeft geleidelijk de voorkeur aan een kleinere uitvoer boven opslag‑snelheid.
  • Level3 geeft geleidelijk de voorkeur aan een kleinere uitvoer boven opslag‑snelheid.
  • Level4 geeft geleidelijk de voorkeur aan een kleinere uitvoer boven opslag‑snelheid.
  • Level5 geeft geleidelijk de voorkeur aan een kleinere uitvoer boven opslag‑snelheid.
  • Level6 balanceert opslagsnelheid en bestandsgrootte. Dit is het standaardniveau.
  • Level7 en Level8 geven nog meer de voorkeur aan een kleinere uitvoer boven opslag‑snelheid.
  • Level9 biedt de sterkste compressie en vereist de meeste verwerkingstijd.

Het volgende voorbeeld slaat een presentatie op zonder compressie:

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();
}

Het volgende voorbeeld gebruikt het maximale compressieniveau:

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();
}

Presentaties opslaan zonder miniatuur te vernieuwen

Wanneer een presentatie wordt opgeslagen als PPTX, regelt de PptxOptions.setRefreshThumbnail methode de document‑miniatuur:

  • true regenereert de miniatuur tijdens de opslaan‑bewerking. Dit is de standaardwaarde.
  • false behoudt de bestaande miniatuur. Als de presentatie geen miniatuur heeft, genereert Aspose.Slides er geen.

Het volgende voorbeeld slaat een presentatie op zonder de miniatuur te vernieuwen:

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();
}

Voortgangsupdates bij opslaan in percentage

Om een opslaan‑bewerking te monitoren, implementeert u de IProgressCallback interface met een Java‑proxy en geeft u de implementatie door aan de SaveOptions.setProgressCallback methode. Aspose.Slides roept vervolgens de IProgressCallback.reporting methode aan met voortgangswaarden tijdens de export.

Het volgende voorbeeld meldt de voortgang van een PDF‑export naar de 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

Ondersteunt Aspose.Slides incrementeel of “fast save”?

Nee. Elke opslaan‑bewerking schrijft een volledig uitvoerbestand in plaats van alleen de gewijzigde delen bij te werken.

Kunnen meerdere threads dezelfde Presentation‑instantie opslaan?

Nee. Een Presentation instantie is not thread-safe. Benader en sla elke instantie slechts vanuit één thread tegelijk op.

Wat gebeurt er met hyperlinks en extern gekoppelde bestanden wanneer ik een presentatie opsla?

Hyperlinks blijven in de presentatie. Aspose.Slides kopieert geen extern gekoppelde bestanden, dus de opgeslagen presentatie moet nog steeds toegang hebben tot hun locaties.

Kan ik documentmetadata zoals auteur, titel, bedrijf en aanmaakdatum opslaan?

Ja. Stel de juiste document properties in vóór het opslaan, en Aspose.Slides schrijft ze naar het uitvoerbestand.