Hämta och uppdatera presentationsinformation på Android

Översikt

Aspose.Slides kan identifiera ett presentationsformat och läsa dess dokumentmetadata utan att skapa ett komplett presentationsobjektmodell. Detta är användbart när du behöver klassificera filer, bygga ett inventarium eller inspektera egenskaper innan du bestämmer dig för om du ska ladda och bearbeta presentationsinnehållet.

Denna artikel visar lättviktig inspektion via PresentationFactory och IPresentationInfo, samt riktade uppdateringar via IDocumentProperties.

Kontrollera ett presentationsformat

Om du redan har en laddad presentation, se Determine the Original Presentation Format för identifiering efter laddning och begränsningarna för äldre PPT-, PPS- och POT-strömmar.

Använd PresentationFactory.getPresentationInfo för att inspektera en fil utan att skapa en Presentation‑instans. Metoden IPresentationInfo.getLoadFormat rapporterar det identifierade formatet, såsom PPTX, PPT eller 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);
}

Bygg ett lättviktigt presentationsinventarium

När du bearbetar många presentationsfiler kan du behöva ett kompakt inventarium för validering, indexering eller ett dokumenthanteringssystem. I detta scenario, använd PresentationFactory.getPresentationInfo för att erhålla ett IPresentationInfo‑objekt, och anropa sedan IPresentationInfo.readDocumentProperties för att läsa dokumentmetadata. Detta tillvägagångssätt skapar ingen Presentation‑instans och kräver inte att du traverserar hela presentationsobjektmodellen.

De utökade egenskaperna som exponeras av IDocumentProperties ger följande inventarievärden:

Metod Inventarievärde
getSlides Totalt antal bilder.
getHiddenSlides Antal dolda bilder.
getNotes Antal bilder som innehåller anteckningar.
getParagraphs Totalt antal stycken, när tillgängligt.
getWords Totalt antal ord.
getMultimediaClips Totalt antal ljud- och videoklipp.

Följande exempel läser dessa värden utan att skapa ett Presentation‑objekt och skriver ut ett kompakt inventarium. Det kombinerar också getHeadingPairs med getTitlesOfParts för att visa innehållsgrupper såsom teckensnitt, teman och bildtitlar.

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

Varje IHeadingPair levererar ett gruppnamn och antalet objekt i den gruppen. IDocumentProperties.getTitlesOfParts returnerar en platt, ordnad array, så konsumera antalet på varandra följande titlar som specificeras av varje rubrikpar.

Lagrade metadata och formatbegränsningar

De inventarieegenskaper som returneras av IPresentationInfo.readDocumentProperties speglar metadata som finns i källdokumentet. Aspose.Slides laddar inte och traverserar presentationsobjektmodellen för att omräkna dessa värden för detta anrop. Saknade egenskaper representeras av standardvärden, och lagrade värden kan vara föråldrade om programmet som senast sparade filen inte uppdaterade dess dokumentegenskaper.

  • PPTX: Formatet tillhandahåller utökade dokumentegenskaper för bild, anteckning, dold bild, stycke, ord och multimedia‑antal, samt rubrikpar och deltitlar. Tillgängligheten beror på vilka egenskaper som skrevs av dokumentproducenten.
  • PPT: Det binära formatet kan lagra motsvarande dokument‑sammanfattningsegenskaper. Om en egenskap saknas eller inte har uppdaterats av dokumentproducenten returnerar Aspose.Slides dess lagrade eller standardvärde snarare än att beräkna det från bilderna.
  • ODP: OpenDocument‑metadata ger allmänna dokumentstatistikvärden, såsom sida, stycke och ordantal, men dessa värden mappar inte till varje PowerPoint‑specifik utökad egenskap. Metadata för dolda bilder, anteckningsbilder, multimedia, rubrikpar och deltitlar kan vara otillgängliga, och inventarieegenskaperna kan returnera standardvärden. Betra inte ett nollvärde eller en tom array som ett bevis på att motsvarande innehåll saknas.

Använd den lättviktiga metadata‑metoden för inventarier och preliminära kontroller. Ladda presentationen och inspektera dess levande objektmodell när resultatet måste återspegla minnes‑ändringar eller när du behöver verifiera det faktiska presentationsinnehållet.

Uppdatera presentationsegenskaper

De egenskaper som returneras av IPresentationInfo.readDocumentProperties kan också ändras utan att skapa en Presentation‑instans. Tillämpa förändringarna med IPresentationInfo.updateDocumentProperties, och skriv sedan den bundna presentationen med IPresentationInfo.writeBindedPresentation.

Den följande bilden visar de ursprungliga dokumentegenskaperna.

Ursprungliga dokumentegenskaper för PowerPoint‑presentationen

Följande exempel ändrar titel och senast sparade tid och skriver resultatet till en ny fil:

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

Den följande bilden visar de uppdaterade dokumentegenskaperna.

Ändrade dokumentegenskaper för PowerPoint‑presentationen

Användbara länkar

För relaterade säkerhetskontroller och skyddsinställningar, se följande artiklar:

FAQ

Hur kan jag kontrollera om typsnitt är inbäddade och vilka de är?

Ladda presentationen och använd Presentation.getFontsManager. Anropa IFontsManager.getEmbeddedFonts för att erhålla de inbäddade typsnitten och IFontsManager.getFonts för att få de typsnitt som används av presentationen. Jämför de två resultaten för att hitta typsnitt som krävs för rendering men som inte är inbäddade.

Hur kan jag snabbt avgöra om filen har dolda bilder och hur många?

När lagrad dokumentmetadata är tillräcklig, läs IDocumentProperties.getHiddenSlides via PresentationFactory.getPresentationInfo och IPresentationInfo.readDocumentProperties. Detta är lämpligt för ett lättviktigt inventarium. Om presentationen har ändrats i minnet kan den lagrade metadata saknas eller vara föråldrad, eller du behöver verifiera levande värden; iterera då genom Presentation.getSlides och inspektera varje bilds ISlide.getHidden‑metod istället.

Kan jag upptäcka om en anpassad bildstorlek och orientering används, och om de skiljer sig från standardvärdena?

Ja. Ladda presentationen och anropa Presentation.getSlideSize. Använd ISlideSize.getType, ISlideSize.getSize och ISlideSize.getOrientation för att jämföra de aktuella inställningarna med de förväntade förinställningarna och dimensionerna.

Finns det ett snabbt sätt att se om diagram refererar till externa datakällor?

Ja. Lokalisera varje Chart och anropa IChartData.getDataSourceType. För en extern arbetsbok, anropa IChartData.getExternalWorkbookPath. Datakältyp och sökväg identifierar en extern referens, men verifiering av om målet är tillgängligt kräver en separat resurskontroll.

Hur kan jag bedöma ‘tunga’ bilder som kan sakta rendering eller PDF‑export?

Det finns ingen enskild komplexitetsegenskap. Traversera Presentation.getSlides och varje bilds IBaseSlide.getShapes‑samling. Använd antal former samt förekomsten av stora bilder, effekter, animationer eller multimedia som screeningssignaler, och mäta en representativ rendering eller export innan du betraktar en bild som en bekräftad prestandabehållare.