Prezentációk mentése JavaScriptben

Áttekintés

Miután létrehoz egy prezentációt vagy nyit meg egy meglévőt, használja a Presentation.save metódust az eredmény írásához. Az Aspose.Slides for Node.js via Java képes egy prezentációt fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és egyéb formátumokban. Az alábbi szakaszok a szabványos mentési műveleteket és a PPTX kimenethez elérhető beállításokat tárgyalják.

Prezentációk mentése fájlokba

A prezentáció fájlba mentéséhez adja át a kimeneti útvonalat és egy SaveFormat értéket a Presentation.save metódusnak. A formátumérték meghatározza, milyen típusú fájlt hoz létre az Aspose.Slides.

A következő példa létrehoz egy prezentációt és PPTX fájlként menti el:

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

const presentation = new aspose.slides.Presentation();
try {
    // Adja hozzá vagy módosítsa a prezentáció tartalmát itt.

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

Prezentációk mentése az eredeti formátumban

A fájl‑ és adatfolyam‑detektálási példákhoz, az újonnan létrehozott prezentációk viselkedéséhez, valamint a forrás‑ és kimeneti formátumok közti különbséghez lásd a Determine the Original Presentation Format oldalt.

Kötegelt feldolgozási alkalmazásban előre nem ismert a bemeneti formátum. Egy fájl betöltése után olvassa ki az eredeti formátumát a Presentation.getSourceFormat metódussal. A kapott SourceFormat értéket adja át a SlideUtil.toSaveFormat metódusnak a megfelelő SaveFormat érték megszerzéséhez, majd a Presentation.save metódussal írja ki a módosított prezentációt.

A következő teljes példában az bemeneti könyvtár minden fájlját feldolgozzák, frissítik a címét, és a betöltött formátumban mentik el egy kimeneti könyvtárba:

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 a PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP és PowerPoint XML formátumokat a megfelelő prezentáció mentési formátumokhoz rendeli. Csak a prezentáció forrásformátumait térképezi le; nem szolgál exportformátumok (például PDF, HTML, TIFF vagy képek) kiválasztására. Egy nem támogatott vagy érvénytelen SourceFormat érték átadása hibát eredményez.

A régi PPT, PPS és POT fájlok ugyanazt a bináris konténert használják. Ha egy ilyen prezentációt kiterjesztés nélküli adatfolyamból töltik be, előfordulhat, hogy a PPS vagy POT fájlt PPT‑ként azonosítja a rendszer. Ha meg kell őrizni ezeket a régi altípusokat, tartsa meg az eredeti fájlnevet vagy a formátum‑metaadatot külön, és használja azt a kimeneti fájlnév és formátum kiválasztásakor.

Prezentációk mentése adatfolyamokba

Prezentáció írásához végleges fájlútvonal nélkül adjon át egy írható adatfolyamot és egy SaveFormat értéket a Presentation.save metódusnak. Ez a megközelítés akkor hasznos, ha a kimenetet egy webszolgáltatásból kell visszaadni, adatbázisban tárolni vagy memóriában feldolgozni.

A következő példa egy új prezentációt fájl‑adatfolyamba ment:

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

Prezentációk mentése előre definiált nézet típussal

Megadhatja azt a nézetet, amelyben a PowerPoint alapértelmezés szerint megnyitja a mentett prezentációt. Használja a ViewProperties.setLastView metódust egy ViewType értékkel a mentés előtt.

A következő példa a Dia‑mester nézetet állítja be kezdeti nézetnek:

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

Prezentációk mentése a szigorú Office Open XML formátumban

Ahhoz, hogy egy PPTX fájl a Office Open XML szigorú profiljának megfeleljen, hozza létre a PptxOptions példányt, és használja a setConformance metódust a Conformance.Iso29500_2008_Strict értékkel. Ezután adja át a beállításokat a Presentation.save metódusnak.

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

Prezentációk mentése Office Open XML formátumban Zip64 módban

A szabványos ZIP archívum korlátozza minden bejegyzés tömörített és tömörítetlen méretét, az összes archívum méretét, valamint a bejegyzések számát. Mivel egy PPTX fájl ZIP archívum, egy nagyon nagy prezentáció túllépheti ezeket a korlátokat. A ZIP64 kiterjesztések növelik a vonatkozó méret‑ és bejegyzésszám‑korlátokat.

Használja a PptxOptions.setZip64Mode metódust annak szabályozására, hogy az Aspose.Slides ZIP64 kiterjesztéseket ír‑e:

  • IfNecessary ZIP64‑et csak akkor használja, ha a prezentáció meghaladja a szabványos ZIP‑korlátokat. Ez az alapértelmezett mód.
  • Never letiltja a ZIP64 kiterjesztéseket.
  • Always mindig ír ZIP64 kiterjesztéseket.

A következő példa mindig engedélyezi a ZIP64 kiterjesztéseket a kimeneti prezentációhoz:

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

Prezentációk mentése Office Open XML formátumban tömörítési szintekkel

PPTX kimenet esetén a mentés sebessége és a fájlméret egyensúlyozható a PptxOptions.setCompressionLevel metódus használatával. A CompressionLevel osztály a következő értékeket biztosítja:

  • None adatot tömörítés nélkül tárol.
  • Level1 a leggyorsabb tömörítést és a legnagyobb tömörített kimenetet biztosítja.
  • Level2‑től Level5‑ig fokozatosan a kisebb kimenetet részesítik előnyben a mentési sebességnél.
  • Level6 egyensúlyt teremt a mentési sebesség és a fájlméret között. Ez az alapértelmezett szint.
  • Level7 és Level8 tovább a kisebb kimenetet helyezik előtérbe a sebességnél.
  • Level9 a legerősebb tömörítést nyújtja, és a legtöbb feldolgozási időt igényli.

A következő példa egy prezentációt tömörítés nélkül ment:

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

A következő példa a maximális tömörítési szintet használja:

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

Prezentációk mentése a miniatűr frissítése nélkül

Amikor egy prezentációt PPTX‑ként ment, a PptxOptions.setRefreshThumbnail metódus szabályozza a dokumentum miniatűrjét:

  • true újragenerálja a miniatűröt a mentési művelet során. Ez az alapértelmezett érték.
  • false megőrzi a meglévő miniatűrt. Ha a prezentációnak nincs miniatűre, az Aspose.Slides nem hoz létre újat.

A következő példa egy prezentációt a miniatűr frissítése nélkül ment:

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

Mentés előrehaladási frissítések százalékban

A mentési művelet megfigyeléséhez valósítsa meg az IProgressCallback interfészt Java proxy‑val, és adja át a megvalósítást a SaveOptions.setProgressCallback metódusnak. Az Aspose.Slides ezután a IProgressCallback.reporting metódust hívja meg a haladásértékekkel az export során.

A következő példa a PDF‑export haladását írja a konzolra:

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

GYIK

Támogatja-e az Aspose.Slides az inkrementális vagy „gyors mentés” funkciót?

Nem. Minden mentési művelet egy teljes kimeneti fájlt ír, a változott részeket nem frissíti külön.

Több szál is mentheti ugyanazt a Presentation példányt?

Nem. Egy Presentation példány nem szálbiztos [/slides/hu/nodejs-java/multithreading/]. Minden példányt egyszerre csak egy szálról érjen el és mentse.

Mi történik a hiperhivatkozásokkal és a külsőleg hivatkozott fájlokkal, amikor mentek egy prezentációt?

A Hyperlinks a prezentációban marad. Az Aspose.Slides nem másolja a külsőleg hivatkozott fájlokat, ezért a mentett prezentációnak továbbra is hozzá kell férnie azok helyéhez.

Menthetek-e dokumentum‑metaadatokat, például szerzőt, címet, céget és létrehozási dátumot?

Igen. Állítsa be a megfelelő document properties értékeket a mentés előtt, és az Aspose.Slides beírja őket a kimeneti fájlba.