Präsentationsinformationen auf Android abrufen und aktualisieren

Übersicht

Aspose.Slides kann das Format einer Präsentation ermitteln und die Dokument‑Metadaten lesen, ohne ein vollständiges Präsentations‑Objektmodell zu erstellen. Dies 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 IPresentationInfo, sowie gezielte Aktualisierungen über IDocumentProperties.

Überprüfen eines Präsentationsformats

Wenn Sie bereits eine geladene Präsentation haben, lesen Sie Determine the Original Presentation Format für die Erkennung nach dem Laden sowie die Einschränkungen von Legacy‑PPT‑, PPS‑ und POT‑Streams.

Verwenden Sie PresentationFactory.getPresentationInfo um eine Datei zu inspizieren, ohne ein Presentation‑Objekt zu erzeugen. Die Methode IPresentationInfo.getLoadFormat gibt das erkannte Format zurück, z. B. PPTX, PPT oder ODP.

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;

String[] fileNames = { "pres.pptx", "pres.ppt", "pres.odp" };

for (String fileName : fileNames) {
    IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(fileName);
    int loadFormat = presentationInfo.getLoadFormat();
    String formatName = "Other (" + loadFormat + ")";

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

    System.out.println(fileName + ": " + formatName);
}

Erstellen eines leichten Präsentationsinventars

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 verwenden Sie PresentationFactory.getPresentationInfo, um ein IPresentationInfo‑Objekt zu erhalten, und rufen dann IPresentationInfo.readDocumentProperties auf, um die Dokument‑Metadaten zu lesen. Dieser Ansatz erstellt kein Presentation‑Objekt und erfordert kein Durchlaufen des vollständigen Präsentations‑Objektmodells.

Die erweiterten Eigenschaften, die von IDocumentProperties 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 von Audio‑ und Videoclips.

Das folgende Beispiel liest diese Werte, ohne ein Presentation‑Objekt zu erzeugen, und gibt ein kompaktes Inventar aus. Es kombiniert außerdem getHeadingPairs mit getTitlesOfParts zur Anzeige von Inhaltsgruppen wie Schriftarten, Designs und Folientiteln.

import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IHeadingPair;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;
import java.nio.file.Paths;

String filePath = "sample.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();

int loadFormat = presentationInfo.getLoadFormat();
String formatName = "Other (" + loadFormat + ")";

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

System.out.println("File: " + Paths.get(filePath).getFileName());
System.out.println("Format: " + formatName);
System.out.println("Title: " + documentProperties.getTitle());
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Statistics:");
System.out.println("  Slides: " + documentProperties.getSlides());
System.out.println("  Hidden slides: " + documentProperties.getHiddenSlides());
System.out.println("  Slides with notes: " + documentProperties.getNotes());
System.out.println("  Paragraphs: " + documentProperties.getParagraphs());
System.out.println("  Words: " + documentProperties.getWords());
System.out.println("  Multimedia clips: " + documentProperties.getMultimediaClips());

IHeadingPair[] headingPairs = documentProperties.getHeadingPairs();
String[] titlesOfParts = documentProperties.getTitlesOfParts();
headingPairs = headingPairs != null ? headingPairs : new IHeadingPair[0];
titlesOfParts = titlesOfParts != null ? titlesOfParts : new String[0];
int partIndex = 0;

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

    for (IHeadingPair headingPair : headingPairs) {
        System.out.println("  " + headingPair.getName() + " (" + headingPair.getCount() + ")");

        for (int partOffset = 0; partOffset < headingPair.getCount() && partIndex < titlesOfParts.length; partOffset++) {
            System.out.println("    - " + titlesOfParts[partIndex]);
            partIndex++;
        }
    }

    if (partIndex < titlesOfParts.length) {
        System.out.println("  Other parts:");

        while (partIndex < titlesOfParts.length) {
            System.out.println("    - " + titlesOfParts[partIndex]);
            partIndex++;
        }
    }
}

Jedes IHeadingPair liefert einen Gruppennamen und die Anzahl der Elemente in dieser Gruppe. IDocumentProperties.getTitlesOfParts gibt ein flaches, geordnetes Array zurück, sodass die Anzahl aufeinanderfolgender Titel, die durch jedes Heading‑Pair angegeben sind, verarbeitet werden kann.

Gespeicherte Metadaten und Formatbeschränkungen

Die von IPresentationInfo.readDocumentProperties zurückgegebenen Inventareigenschaften spiegeln die Metadaten wider, die im Quellendokument verfügbar sind. Aspose.Slides lädt und durchläuft das Präsentations‑Objektmodell 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 bietet erweiterte Dokumenteigenschaften für Folien‑, Notizen‑, versteckte‑Folien‑, Absatz‑, Wort‑ und Multimedia‑Zählungen sowie Heading‑Pairs und Part‑Titles. 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 vom Dokumentersteller nicht aktualisiert wurde, gibt Aspose.Slides den gespeicherten oder Standardwert zurück, anstatt sie aus den Folien zu berechnen.
  • ODP: OpenDocument‑Metadaten bieten allgemeine Dokumentstatistiken wie Seiten‑, Absatz‑ und Wortzahlen, aber diese Werte lassen sich nicht auf jede PowerPoint‑spezifische erweiterte Eigenschaft abbilden. Metadaten für versteckte Folien, Notizen‑Folien, Multimedia, Heading‑Pairs und Part‑Titles können fehlen, und die Inventareigenschaften 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 Metadaten‑Ansatz für Inventare und Vorab‑Prüfungen. Laden Sie die Präsentation und inspizieren Sie ihr Live‑Objektmodell, wenn das Ergebnis Änderungen im Speicher widerspiegeln muss oder Sie den tatsächlichen Präsentationsinhalt verifizieren müssen.

Präsentationseigenschaften aktualisieren

Die von IPresentationInfo.readDocumentProperties zurückgegebenen Eigenschaften können ebenfalls geändert werden, ohne ein Presentation‑Objekt zu erzeugen. Wenden Sie die Änderungen mit IPresentationInfo.updateDocumentProperties an und schreiben Sie die gebundene Präsentation mit IPresentationInfo.writeBindedPresentation.

Das folgende Bild zeigt die ursprünglichen Dokumenteigenschaften der PowerPoint‑Präsentation.

Ursprüngliche Dokumenteigenschaften der PowerPoint‑Präsentation

Das folgende Beispiel ändert den Titel und die zuletzt gespeicherte Zeit und schreibt das Ergebnis in eine neue Datei:

import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.PresentationFactory;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;

String sourceFile = "sample.pptx";
String outputFile = "sample_with_updated_properties.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(sourceFile);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();

documentProperties.setTitle("Quarterly sales report");
documentProperties.setLastSavedTime(new Date());

presentationInfo.updateDocumentProperties(documentProperties);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
    presentationInfo.writeBindedPresentation(outputStream);
}

Das folgende Bild zeigt die geänderten Dokumenteigenschaften der PowerPoint‑Präsentation.

Geänderte Dokumenteigenschaften der PowerPoint‑Präsentation

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 IFontsManager.getEmbeddedFonts auf, um die eingebetteten Schriftarten zu erhalten, und IFontsManager.getFonts für die in der Präsentation verwendeten Schriftarten. Vergleichen Sie die beiden Ergebnisse, um Schriftarten zu finden, die für die Wiedergabe erforderlich sind, aber nicht eingebettet wurden.

Wie kann ich schnell feststellen, ob die Datei versteckte Folien enthält und wie viele?

Wenn die gespeicherten Dokumentmetadaten ausreichen, lesen Sie IDocumentProperties.getHiddenSlides über PresentationFactory.getPresentationInfo und IPresentationInfo.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; zum Verifizieren der Live‑Werte iterieren Sie über Presentation.getSlides und prüfen jede Folie mit der Methode ISlide.getHidden.

Kann ich erkennen, ob eine benutzerdefinierte Foliengröße und -ausrichtung verwendet wird und ob sie von den Vorgabewerten abweicht?

Ja. Laden Sie die Präsentation und rufen Sie Presentation.getSlideSize auf. Verwenden Sie ISlideSize.getType, ISlideSize.getSize und ISlideSize.getOrientation zum Vergleich der aktuellen Einstellungen mit den erwarteten Vorgaben und Abmessungen.

Gibt es einen schnellen Weg zu sehen, ob Diagramme externe Datenquellen referenzieren?

Ja. Suchen Sie jedes Chart und rufen Sie IChartData.getDataSourceType auf. Für eine externe Arbeitsmappe rufen Sie IChartData.getExternalWorkbookPath auf. Der Datentyp und Pfad identifizieren eine externe Referenz, die Verfügbarkeit des Ziels muss jedoch separat geprüft werden.

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 IBaseSlide.getShapes‑Sammlung. Verwenden Sie die Anzahl der Formen sowie das Vorhandensein großer Bilder, Effekte, Animationen oder Multimedia als Screening‑Signal und messen Sie ein repräsentatives Rendering oder Export, bevor Sie eine Folie als bestätigten Performance‑Engpass einstufen.