Präsentationsinformationen in JavaScript abrufen und aktualisieren
Übersicht
Aspose.Slides kann das Format einer Präsentation erkennen und deren Dokumentmetadaten auslesen, ohne ein vollständiges Präsentationsobjektmodell zu erstellen. Das ist nützlich, wenn Sie Dateien klassifizieren, ein Inventar erstellen oder Eigenschaften prüfen müssen, bevor Sie entscheiden, ob Sie den Präsentationsinhalt laden und verarbeiten.
Dieser Artikel demonstriert die leichte Inspektion über PresentationFactory und PresentationInfo, sowie gezielte Aktualisierungen über DocumentProperties.
Prüfen des Präsentationsformats
Verwenden Sie PresentationFactory.getPresentationInfo, um eine Datei zu prüfen, ohne eine Presentation‑Instanz zu erstellen. Die Methode PresentationInfo.getLoadFormat gibt das erkannte Format zurück, z. B. PPTX, PPT oder 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}`);
}
Leichtes Präsentationsinventar erstellen
Wenn Sie viele Präsentationsdateien verarbeiten, benötigen Sie möglicherweise ein kompaktes Inventar für Validierung, Indexierung oder ein Dokument‑Management‑System. In diesem Szenario nutzen Sie PresentationFactory.getPresentationInfo, um ein PresentationInfo‑Objekt zu erhalten, und rufen dann PresentationInfo.readDocumentProperties auf, um die Dokumentmetadaten auszulesen. Dieser Ansatz erstellt keine Presentation‑Instanz und erfordert kein Durchlaufen des vollständigen Präsentationsobjektmodells.
Die erweiterten Eigenschaften, die von DocumentProperties bereitgestellt werden, liefern folgende Inventarwerte:
| Methode | Inventarwert |
|---|---|
| getSlides | Gesamtzahl der Folien. |
| getHiddenSlides | Anzahl versteckter Folien. |
| getNotes | Anzahl der Folien, die Notizen enthalten. |
| getParagraphs | Gesamtzahl der Absätze, falls verfügbar. |
| getWords | Gesamtzahl der Wörter. |
| getMultimediaClips | Gesamtzahl der Audio‑ und Video‑Clips. |
Das folgende Beispiel liest diese Werte, ohne ein Presentation‑Objekt zu erstellen, und gibt ein kompaktes Inventar aus. Es kombiniert außerdem DocumentProperties.getHeadingPairs mit DocumentProperties.getTitlesOfParts, um Inhaltsgruppen wie Schriftarten, Designs und Folientitel anzuzeigen.
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++;
}
}
}
Jedes HeadingPair liefert über HeadingPair.getName einen Gruppennamen und über HeadingPair.getCount die Anzahl der Elemente in dieser Gruppe. DocumentProperties.getTitlesOfParts gibt ein flaches, geordnetes Array zurück, sodass Sie die angegebene Anzahl aufeinanderfolgender Titel jeder Überschriftengruppe konsumieren.
Gespeicherte Metadaten und Formatbeschränkungen
Die von PresentationInfo.readDocumentProperties zurückgegebenen Inventareigenschaften spiegeln die im Quelldokument verfügbaren Metadaten wider. Aspose.Slides lädt und durchläuft das Präsentationsobjektmodell nicht, um diese Werte für diesen Aufruf neu zu berechnen. Fehlende Eigenschaften werden durch Standardwerte dargestellt, und gespeicherte Werte können veraltet sein, wenn die Anwendung, die die Datei zuletzt gespeichert hat, ihre Dokumenteigenschaften nicht aktualisiert hat.
- PPTX: Das Format stellt erweiterte Dokumenteigenschaften für Folien‑, Notiz‑, versteckte‑Folien‑, Absatz‑, Wort‑ und Multimedia‑Zähler sowie Überschriftenpaare und Teil‑Titel bereit. Die Verfügbarkeit hängt davon ab, welche Eigenschaften vom Dokumentersteller geschrieben wurden.
- PPT: Das Binärformat kann entsprechende Dokument‑Zusammenfassungs‑Eigenschaften speichern. Wenn eine Eigenschaft fehlt oder nicht vom Dokumentersteller aktualisiert wurde, gibt Aspose.Slides ihren gespeicherten oder Standardwert zurück, anstatt sie aus den Folien zu berechnen.
- ODP: OpenDocument‑Metadaten liefern allgemeine Dokumentstatistiken, wie Seiten‑, Absatz‑ und Wort‑Zähler, aber diese Werte lassen sich nicht auf jede PowerPoint‑spezifische erweiterte Eigenschaft abbilden. Metadaten zu versteckten Folien, Notiz‑Folien, Multimedia, Überschriftenpaaren und Teil‑Titeln können fehlen, und die Inventar‑Eigenschaften können Standardwerte zurückgeben. Behandeln Sie keinen Null‑Wert oder ein leeres Array als autoritativen Beweis dafür, dass der entsprechende Inhalt fehlt.
Verwenden Sie den leichten Metadatenansatz für Inventare und Vorabprüfungen. Laden Sie die Präsentation und prüfen Sie ihr Live‑Objektmodell, wenn das Ergebnis im Speichergehalt reflektiert werden muss oder wenn Sie den tatsächlichen Präsentationsinhalt verifizieren müssen.
Präsentationseigenschaften aktualisieren
Die von PresentationInfo.readDocumentProperties zurückgegebenen Eigenschaften können ebenfalls geändert werden, ohne eine Presentation‑Instanz zu erstellen. Wenden Sie die Änderungen mit PresentationInfo.updateDocumentProperties an und schreiben Sie anschließend die gebundene Präsentation mit PresentationInfo.writeBindedPresentation.
Das folgende Bild zeigt die ursprünglichen Dokumenteigenschaften.

Das folgende Beispiel ändert den Titel und den Zeitpunkt der letzten Speicherung und schreibt das Ergebnis in eine neue Datei:
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();
}
Das folgende Bild zeigt die aktualisierten Dokumenteigenschaften.

Nützliche Links
Für verwandte Sicherheitsprüfungen und Schutzeinstellungen siehe die folgenden Artikel:
FAQ
Wie kann ich prüfen, ob Schriftarten eingebettet sind und welche das sind?
Laden Sie die Präsentation und verwenden Sie Presentation.getFontsManager. Rufen Sie FontsManager.getEmbeddedFonts auf, um die eingebetteten Schriftarten zu erhalten, und FontsManager.getFonts, um die von der Präsentation verwendeten Schriftarten zu erhalten. Vergleichen Sie die beiden Ergebnisse, um Schriftarten zu finden, die für die Wiedergabe benötigt, aber nicht eingebettet sind.
Wie kann ich schnell feststellen, ob die Datei versteckte Folien enthält und wie viele?
Wenn gespeicherte Dokumentmetadaten ausreichen, lesen Sie DocumentProperties.getHiddenSlides über PresentationFactory.getPresentationInfo und PresentationInfo.readDocumentProperties. Dies eignet sich für ein leichtes Inventar. Wenn die Präsentation im Speicher verändert wurde, können die gespeicherten Metadaten fehlen oder veraltet sein, oder Sie müssen Live‑Werte prüfen, indem Sie durch Presentation.getSlides iterieren und für jede Folie die Methode Slide.getHidden prüfen.
Kann ich erkennen, ob eine benutzerdefinierte Foliengröße und Ausrichtung verwendet wird und ob sie von den Vorgaben abweicht?
Ja. Laden Sie die Präsentation und rufen Sie Presentation.getSlideSize auf. Verwenden Sie SlideSize.getType, SlideSize.getSize und SlideSize.getOrientation, um die aktuellen Einstellungen mit den erwarteten Vorgaben und Abmessungen zu vergleichen.
Gibt es eine schnelle Möglichkeit zu sehen, ob Diagramme externe Datenquellen referenzieren?
Ja. Durchsuchen Sie jede Chart und rufen Sie ChartData.getDataSourceType auf. Für ein externes Arbeitsbuch rufen Sie ChartData.getExternalWorkbookPath auf. Der Datentyp und der Pfad identifizieren eine externe Referenz, aber die Überprüfung, ob das Ziel verfügbar ist, erfordert eine separate Ressourcenprüfung.
Wie kann ich „schwere“ Folien beurteilen, die das Rendern oder den PDF‑Export verlangsamen könnten?
Es gibt keine einzelne Komplexitäts‑Eigenschaft. Durchlaufen Sie Presentation.getSlides und für jede Folie die Sammlung BaseSlide.getShapes. Nutzen Sie die Anzahl der Formen sowie das Vorhandensein großer Bilder, Effekte, Animationen oder Multimedia als Screening‑Signal und messen Sie ein repräsentatives Render‑ oder Export‑Ergebnis, bevor Sie eine Folie als bestätigten Leistungsengpass einstufen.