Bemutatóinformációk lekérése és frissítése JavaScriptben

Áttekintés

Az Aspose.Slides képes azonosítani egy bemutató formátumát, és elolvasni a dokumentum metaadatait anélkül, hogy teljes bemutató objektummodellt hozna létre. Ez akkor hasznos, ha fájlokat kell kategorizálni, leltárt készíteni, vagy tulajdonságokat ellenőrizni kell, mielőtt eldöntené, hogy betölti és feldolgozza a bemutató tartalmát.

Ez a cikk bemutatja a könnyű ellenőrzést a PresentationFactory és a PresentationInfo segítségével, valamint a célzott frissítéseket a DocumentProperties használatával.

Egy bemutató formátumának ellenőrzése

Ha már betöltött bemutatója van, lásd a Az eredeti bemutató formátum meghatározása cikket a betöltés utáni és a régi PPT, PPS és POT adatfolyamok korlátaival kapcsolatban.

Használja a PresentationFactory.getPresentationInfo metódust egy fájl vizsgálatához anélkül, hogy Presentation példányt hozna létre. A PresentationInfo.getLoadFormat metódus jelzi a felismert formátumot, például PPTX, PPT vagy ODP.

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

const fileNames = ["pres.pptx", "pres.ppt", "pres.odp"];

for (const fileName of fileNames) {
    const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(fileName);
    const loadFormat = presentationInfo.getLoadFormat();
    let formatName = `Other (${loadFormat})`;

    if (loadFormat === aspose.LoadFormat.Pptx) {
        formatName = "PPTX";
    } else if (loadFormat === aspose.LoadFormat.Ppt) {
        formatName = "PPT";
    } else if (loadFormat === aspose.LoadFormat.Odp) {
        formatName = "ODP";
    }

    console.log(`${fileName}: ${formatName}`);
}

Könnyű bemutató leltár felépítése

Ha sok bemutatófájlt dolgoz fel, előfordulhat, hogy egy kompakt leltárra van szüksége érvényesítéshez, indexeléshez vagy dokumentumkezelő rendszerhez. Ebben a helyzetben használja a PresentationFactory.getPresentationInfo metódust egy PresentationInfo objektum megszerzéséhez, majd hívja a PresentationInfo.readDocumentProperties metódust a dokumentum metaadatainak beolvasásához. Ez a megközelítés nem hoz létre Presentation példányt, és nem igényli a teljes bemutató objektummodell bejárását.

A DocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltárértékeket adják:

Módszer Leltár érték
getSlides Diák összes száma.
getHiddenSlides Rejtett diák száma.
getNotes Jegyzetet tartalmazó diák száma.
getParagraphs Bekezdések összes száma, ha elérhető.
getWords Szavak összes száma.
getMultimediaClips Hang- és videoklipek összes száma.

Az alábbi példa ezeket az értékeket olvassa be anélkül, hogy Presentation objektumot hozna létre, és egy kompakt leltárt nyomtat. Emellett a DocumentProperties.getHeadingPairs metódust kombinálja a DocumentProperties.getTitlesOfParts metódussal, hogy megjelenítse a tartalomcsoportokat, például betűtípusokat, témákat és dia címeket.

const path = require("path");
const aspose = require("aspose.slides.via.java");

const filePath = "sample.pptx";
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(filePath);
const documentProperties = presentationInfo.readDocumentProperties();

const loadFormat = presentationInfo.getLoadFormat();
let formatName = `Other (${loadFormat})`;

if (loadFormat === aspose.LoadFormat.Pptx) {
    formatName = "PPTX";
} else if (loadFormat === aspose.LoadFormat.Ppt) {
    formatName = "PPT";
} else if (loadFormat === aspose.LoadFormat.Odp) {
    formatName = "ODP";
}

console.log(`File: ${path.basename(filePath)}`);
console.log(`Format: ${formatName}`);
console.log(`Title: ${documentProperties.getTitle()}`);
console.log(`Author: ${documentProperties.getAuthor()}`);
console.log("Statistics:");
console.log(`  Slides: ${documentProperties.getSlides()}`);
console.log(`  Hidden slides: ${documentProperties.getHiddenSlides()}`);
console.log(`  Slides with notes: ${documentProperties.getNotes()}`);
console.log(`  Paragraphs: ${documentProperties.getParagraphs()}`);
console.log(`  Words: ${documentProperties.getWords()}`);
console.log(`  Multimedia clips: ${documentProperties.getMultimediaClips()}`);

const headingPairs = documentProperties.getHeadingPairs() || [];
const titlesOfParts = documentProperties.getTitlesOfParts() || [];
let partIndex = 0;

if (headingPairs.length === 0 || titlesOfParts.length === 0) {
    console.log("Content groups: not available");
} else {
    console.log("Content groups:");

    for (const headingPair of headingPairs) {
        const partCount = headingPair.getCount();
        console.log(`  ${headingPair.getName()} (${partCount})`);

        for (let partOffset = 0; partOffset < partCount && partIndex < titlesOfParts.length; partOffset++) {
            console.log(`    - ${titlesOfParts[partIndex]}`);
            partIndex++;
        }
    }

    if (partIndex < titlesOfParts.length) {
        console.log("  Other parts:");

        while (partIndex < titlesOfParts.length) {
            console.log(`    - ${titlesOfParts[partIndex]}`);
            partIndex++;
        }
    }
}

Minden HeadingPair egy csoportnevet ad a HeadingPair.getName segítségével, és a csoportban lévő elemek számát a HeadingPair.getCount adja vissza. A DocumentProperties.getTitlesOfParts lapos, rendezett tömböt ad vissza, ezért a címek számát a megfelelő heading pair által megadott egymást követő címek mennyiségére kell felhasználni.

Tárolt metaadatok és formátumkorlátok

Az PresentationInfo.readDocumentProperties által visszaadott leltártulajdonságok tükrözik a forrásdokumentumban elérhető metaadatokat. Az Aspose.Slides nem tölti be és nem járja be a bemutató objektummodellt, hogy újraszámolja ezeket az értékeket a hívás során. A hiányzó tulajdonságokat alapértelmezett értékek képviselik, és a tárolt értékek elavultak lehetnek, ha az utolsó mentést végző alkalmazás nem frissítette a dokumentumtulajdonságokat.

  • PPTX: A formátum kibővített dokumentum tulajdonságokat biztosít a dia, jegyzet, rejtett dia, bekezdés, szó és multimédia számlálókhoz, valamint a heading pair-ekhez és részcímekhez. A rendelkezésre állás attól függ, hogy a dokumentum előállítója mely tulajdonságokat írta.
  • PPT: A bináris formátum képes megfelelő dokumentum-összegző tulajdonságok tárolására. Ha egy tulajdonság hiányzik vagy nem frissült a dokumentum előállítója által, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza, a diákból számolva nem.
  • ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat biztosítanak, mint például oldal-, bekezdés- és szószám, de ezek az értékek nem térképezhetők minden PowerPoint-specifikus kiterjesztett tulajdonságra. A rejtett dia, jegyzet dia, multimédia, heading-pair és részcím metaadatok lehetnek hiányosak, és a leltár értékek alapértelmezett értékekkel térhetnek vissza. Ne tekintse a null értéket vagy egy üres tömböt bizonyítéknak arra, hogy a megfelelő tartalom hiányzik.

Használja a könnyű metaadat‑megközelítést leltárak és előzetes ellenőrzések esetén. Töltse be a bemutatót, és vizsgálja meg a futó objektummodellt, ha az eredménynek tükröznie kell a memóriában történt változásokat, vagy ha a tényleges bemutató tartalmát kell ellenőrizni.

Bemutató tulajdonságok frissítése

Az PresentationInfo.readDocumentProperties által visszaadott tulajdonságok szintén módosíthatók anélkül, hogy Presentation példányt hoznánk létre. Alkalmazza a változtatásokat a PresentationInfo.updateDocumentProperties metódussal, majd írja ki a kötött bemutatót a PresentationInfo.writeBindedPresentation segítségével.

Az alábbi kép a PowerPoint bemutató eredeti dokumentumtulajdonságait mutatja.

A PowerPoint bemutató eredeti dokumentumtulajdonságai

Az alábbi példa megváltoztatja a címet és az utolsó mentés időpontját, majd az eredményt egy új fájlba írja:

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

const sourceFile = "sample.pptx";
const outputFile = "sample_with_updated_properties.pptx";
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(sourceFile);
const documentProperties = presentationInfo.readDocumentProperties();

documentProperties.setTitle("Quarterly sales report");
documentProperties.setLastSavedTime(java.newInstanceSync("java.util.Date"));

presentationInfo.updateDocumentProperties(documentProperties);
const outputStream = java.newInstanceSync("java.io.FileOutputStream", outputFile);
try {
    presentationInfo.writeBindedPresentation(outputStream);
} finally {
    outputStream.close();
}

Az alábbi kép a frissített dokumentumtulajdonságokat mutatja.

A PowerPoint bemutató módosított dokumentumtulajdonságai

Hasznos hivatkozások

Kapcsolódó biztonsági ellenőrzések és védelmi beállítások tekintetében lásd a következő cikkeket:

GYIK

Hogyan ellenőrizhetem, hogy a betűkészletek be vannak-e ágyazva, és melyek azok?

Töltse be a bemutatót, és használja a Presentation.getFontsManager metódust. Hívja a FontsManager.getEmbeddedFonts metódust a beágyazott betűkészletek lekéréséhez, valamint a FontsManager.getFonts metódust a bemutató által használt betűkészletekhez. Hasonlítsa össze a két eredményt, hogy megtalálja a megjelenítéshez szükséges, de nincs beágyazva lévő betűkészleteket.

Hogyan tudom gyorsan megállapítani, hogy a fájl rejtett diákot tartalmaz-e, és hány darabot?

Ha a tárolt dokumentum metaadatai elegendőek, olvassa a DocumentProperties.getHiddenSlides értéket a PresentationFactory.getPresentationInfo és a PresentationInfo.readDocumentProperties segítségével. Ez alkalmas egy könnyű leltárra. Ha a bemutatót memóriában módosították, a tárolt metaadat hiányozhat vagy elavult lehet, vagy élő értékeket kell ellenőrizni; ekkor járja be a Presentation.getSlides gyűjteményt, és minden dia Slide.getHidden metódusát vizsgálja meg.

Észlelhetem-e, hogy egyéni dia méret és tájolás van‑e használatban, és eltérnek‑e az alapértelmezettől?

Igen. Töltse be a bemutatót, és hívja a Presentation.getSlideSize metódust. Használja a SlideSize.getType, a SlideSize.getSize és a SlideSize.getOrientation metódusokat a jelenlegi beállítások összehasonlításához az elvárt előre beállított méretekkel és tájolással.

Van gyors mód arra, hogy lássam, a diagramok külső adatforrásra hivatkoznak‑e?

Igen. Keresse meg minden Chart elemet, és hívja a ChartData.getDataSourceType metódust. Külső munkafüzet esetén hívja a ChartData.getExternalWorkbookPath metódust. Az adatforrás típus és az elérési út külső hivatkozást jelez, de annak elérhetősége külön erőforrás‑ellenőrzést igényel.

Hogyan tudom felmérni a „nehéz” diákat, amelyek lassíthatják a renderelést vagy a PDF exportot?

Nincs egyetlen „komplexitás” tulajdonság. Járja be a Presentation.getSlides gyűjteményt, és minden dia BaseSlide.getShapes kollekcióját. Használjon alakzat‑számok és nagy képek, effektusok, animációk vagy multimédia jelenlétének jelzéseit szűrési tényezőként, és mérje egy reprezentatív renderelés vagy export időt, mielőtt a diát megerősített teljesítmény‑szűkítőnek tekintené.