Informatie over presentaties ophalen en bijwerken in JavaScript

Overzicht

Aspose.Slides kan het formaat van een presentatie identificeren en de documentmetadata lezen zonder een compleet presentatie‑objectmodel te maken. Dit is handig wanneer u bestanden wilt classificeren, een inventaris wilt opbouwen of eigenschappen wilt inspecteren voordat u beslist of de presentatieinhoud moet worden geladen en verwerkt.

Dit artikel demonstreert een lichte inspectie via PresentationFactory en PresentationInfo, evenals gerichte updates via DocumentProperties.

Controleer een presentatieformaat

Als u al een geladen presentatie heeft, zie Bepaal het oorspronkelijke presentatiefomat voor detectie na het laden en de beperkingen van legacy PPT‑, PPS‑ en POT‑streams.

Gebruik PresentationFactory.getPresentationInfo om een bestand te inspecteren zonder een Presentation‑instance te maken. De PresentationInfo.getLoadFormat methode rapporteert het gedetecteerde formaat, zoals PPTX, PPT of 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}`);
}

Bouw een Lichte Presentatie‑Inventaris

Wanneer u veel presentatiebestanden verwerkt, heeft u mogelijk een compacte inventaris nodig voor validatie, indexering of een document‑beheersysteem. Gebruik in dit scenario PresentationFactory.getPresentationInfo om een PresentationInfo‑object te verkrijgen en roep vervolgens PresentationInfo.readDocumentProperties aan om de documentmetadata te lezen. Deze aanpak maakt geen Presentation‑instance aan en vereist niet dat u het volledige presentatie‑objectmodel doorloopt.

De uitgebreide eigenschappen die door DocumentProperties worden blootgesteld, bieden de volgende inventariswaarden:

Methode Inventariswaarde
getSlides Totaal aantal dia’s.
getHiddenSlides Aantal verborgen dia’s.
getNotes Aantal dia’s die notities bevatten.
getParagraphs Totaal aantal alinea’s, indien beschikbaar.
getWords Totaal aantal woorden.
getMultimediaClips Totaal aantal audio‑ en videoclips.

Het volgende voorbeeld leest deze waarden zonder een Presentation‑object te maken en drukt een compacte inventaris af. Het combineert bovendien DocumentProperties.getHeadingPairs met DocumentProperties.getTitlesOfParts om inhoudsgroepen weer te geven, zoals lettertypen, thema’s en diatitels.

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++;
        }
    }
}

Elke HeadingPair levert een groepsnaam via HeadingPair.getName en het aantal items in die groep via HeadingPair.getCount. DocumentProperties.getTitlesOfParts retourneert een platte, geordende array, dus consumeer je het aantal opeenvolgende titels dat door elk heading‑pair wordt gespecificeerd.

Opgeslagen Metadata en Formaatbeperkingen

De inventarie‑eigenschappen die door PresentationInfo.readDocumentProperties worden geretourneerd, weerspiegelen de metadata die beschikbaar zijn in het bron‑document. Aspose.Slides laadt en doorloopt het presentatie‑objectmodel niet om deze waarden voor deze oproep opnieuw te berekenen. Ontbrekende eigenschappen worden weergegeven met standaardwaarden, en opgeslagen waarden kunnen verouderd zijn als de applicatie die het bestand als laatste heeft opgeslagen haar documenteigenschappen niet heeft bijgewerkt.

  • PPTX: Het formaat biedt uitgebreide documenteigenschappen voor aantallen dia’s, notities, verborgen dia’s, alinea’s, woorden en multimedia, evenals heading‑pairs en onderdeel‑titels. Beschikbaarheid hangt af van welke eigenschappen door de documentproducent zijn weggeschreven.
  • PPT: Het binaire formaat kan overeenkomstige document‑samenvattings‑eigenschappen opslaan. Als een eigenschap ontbreekt of niet is ververst door de documentproducent, retourneert Aspose.Slides de opgeslagen of standaardwaarde in plaats van deze vanuit de dia’s te berekenen.
  • ODP: OpenDocument-metadata biedt algemene documentstatistieken, zoals aantal pagina’s, alinea’s en woorden, maar deze waarden corresponderen niet met elke PowerPoint‑specifieke uitgebreide eigenschap. Metadata voor verborgen dia’s, notitie‑dia’s, multimedia, heading‑pairs en onderdeel‑titels kan ontbreken, en de inventarie‑eigenschappen kunnen standaardwaarden retourneren. Beschouw geen nul‑waarde of een lege array als sluitend bewijs dat de corresponderende inhoud afwezig is.

Gebruik de lichte metadata‑aanpak voor inventarissen en voorlopige controles. Laad de presentatie en inspecteer het live‑objectmodel wanneer het resultaat in‑memory wijzigingen moet weerspiegelen of wanneer u de feitelijke presentatie‑inhoud moet verifiëren.

Werk Presentatie‑Eigenschappen Bij

De eigenschappen die door PresentationInfo.readDocumentProperties worden geretourneerd, kunnen ook worden gewijzigd zonder een Presentation‑instance te maken. Pas de wijzigingen toe met PresentationInfo.updateDocumentProperties, en schrijf vervolgens de gekoppelde presentatie weg met PresentationInfo.writeBindedPresentation.

De volgende afbeelding toont de originele documenteigenschappen.

Originele documenteigenschappen van de PowerPoint‑presentatie

Het volgende voorbeeld wijzigt de titel en de laatst‑opgeslagen tijd en schrijft het resultaat naar een nieuw bestand:

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

De volgende afbeelding toont de gewijzigde documenteigenschappen.

Gewijzigde documenteigenschappen van de PowerPoint‑presentatie

Voor verwante beveiligingscontroles en beschermingsinstellingen, zie de volgende artikelen:

FAQ

Hoe kan ik controleren of lettertypen zijn ingesloten en welke dat zijn?

Laad de presentatie en gebruik Presentation.getFontsManager. Roep FontsManager.getEmbeddedFonts aan om de ingesloten lettertypen te verkrijgen en FontsManager.getFonts om de door de presentatie gebruikte lettertypen te verkrijgen. Vergelijk de twee resultaten om lettertypen te vinden die nodig zijn voor weergave maar niet zijn ingesloten.

Hoe kan ik snel zien of het bestand verborgen dia’s bevat en hoeveel?

Wanneer de opgeslagen documentmetadata voldoende is, lees dan DocumentProperties.getHiddenSlides via PresentationFactory.getPresentationInfo en PresentationInfo.readDocumentProperties. Dit is geschikt voor een lichte inventaris. Als de presentatie in het geheugen is aangepast, kan de opgeslagen metadata ontbreken of verouderd zijn, of moet u live‑waarden verifiëren; loop dan door Presentation.getSlides en inspecteer voor elke dia de methode Slide.getHidden.

Kan ik detecteren of er aangepaste dia‑grootte en oriëntatie worden gebruikt, en of deze afwijken van de standaardwaarden?

Ja. Laad de presentatie en roep Presentation.getSlideSize aan. Gebruik SlideSize.getType, SlideSize.getSize, en SlideSize.getOrientation om de huidige instellingen te vergelijken met de verwachte standaard en afmetingen.

Is er een snelle manier om te zien of diagrammen verwijzen naar externe gegevensbronnen?

Ja. Zoek elk Chart op en roep ChartData.getDataSourceType aan. Voor een externe werkmap roep je ChartData.getExternalWorkbookPath aan. Het type gegevensbron en het pad identificeren een externe verwijzing, maar om te verifiëren of het doel beschikbaar is, is een afzonderlijke resource‑check vereist.

Hoe kan ik ‘zware’ dia’s beoordelen die de weergave of PDF‑export kunnen vertragen?

Er bestaat geen enkele complexiteits‑eigenschap. Doorloop Presentation.getSlides en de BaseSlide.getShapes‑collectie van elke dia. Gebruik het aantal vormen en de aanwezigheid van grote afbeeldingen, effecten, animaties of multimedia als screeningssignalen, en meet een representatieve weergave of export voordat u een dia als een bevestigd prestatie‑knelpunt beschouwt.