Hantera presentations-egenskaper på Android

Introduktion

Aspose.Slides stöder två typer av dokumentegenskaper: Inbyggda och Anpassade. Båda dessa egenskapstyper kan enkelt nås och hanteras med hjälp av Aspose.Slides API.

Aspose.Slides låter dig arbeta med presentationsdokumentegenskaper via gränssnittet IDocumentProperties . En instans av detta gränssnitt returneras av IPresentation.getDocumentProperties. Följande exempel visar hur man läser, ändrar och hanterar dessa egenskaper.

Dokumentegenskaper i PowerPoint

Microsoft PowerPoint 2007 möjliggör hantering av dokumentegenskaper för presentationsfilerna. Allt du behöver göra är att klicka på Office‑ikonen och sedan på menyobjektet Prepare | Properties | Advanced Properties i Microsoft PowerPoint 2007 som visas nedan:

Välja menyobjektet Advanced Properties **
todo:image_alt_text

När du har valt menyobjektet Advanced Properties visas en dialogruta som låter dig hantera dokumentegenskaperna för PowerPoint‑filen, som visas nedan i bilden:

Egenskapsdialog **
todo:image_alt_text

I dialogrutan Properties Dialog ovan kan du se att det finns många flikar såsom General, Summary, Statistics, Contents och Custom. Alla dessa flikar möjliggör konfiguration av olika typer av information relaterad till PowerPoint‑filerna. Fliken Custom används för att hantera de anpassade egenskaperna för PowerPoint‑filerna.

Arbeta med dokumentegenskaper med Aspose.Slides för Android via Java

Som vi tidigare har beskrivit stödjer Aspose.Slides för Android via Java två typer av dokumentegenskaper, nämligen Built-in och Custom. Så kan utvecklare komma åt båda typerna av egenskaper med Aspose.Slides för Android via Java API. Aspose.Slides för Android via Java tillhandahåller klassen IDocumentProperties som representerar dokumentegenskaperna som är kopplade till en presentationsfil via egenskapen Presentation.DocumentProperties.

Utvecklare kan använda egenskapen IDocumentProperties som exponeras av objektet Presentation för att komma åt dokumentegenskaperna för presentationsfilerna, enligt beskrivningen nedan:

Läs offentliga egenskaper från en krypterad presentation

Ett öppningslösenord skyddar normalt både presentationsinnehåll och dokumentegenskaper. När en presentation krypteras genom att skicka false till IProtectionManager.setEncryptDocumentProperties, förblir dess dokumentegenskaper offentliga. En applikation kan då skicka true till LoadOptions.setOnlyLoadDocumentProperties och läsa den offentliga metadata utan att ange öppningslösenordet.

Alternativet för endast dokumentegenskaper styr vad Aspose.Slides laddar; det dekrypterar ingenting. Om egenskaperna var inkluderade i krypteringen misslyckas laddning utan lösenordet. Om presentationen inte är krypterad ignoreras alternativet och hela presentationen laddas.

Följande exempel verifierar laddningsläget via IProtectionManager.isOnlyDocumentPropertiesLoaded och läser sedan inbyggda egenskaper via IPresentation.getDocumentProperties:

import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setOnlyLoadDocumentProperties(true);

Presentation presentation = new Presentation("public-properties-encrypted.pptx", loadOptions);
try {
    if (presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
        IDocumentProperties properties = presentation.getDocumentProperties();

        System.out.println("Author: " + properties.getAuthor());
        System.out.println("Title: " + properties.getTitle());
        System.out.println("Keywords: " + properties.getKeywords());
    } else {
        System.out.println("The presentation was not loaded in document-properties-only mode.");
    }
} finally {
    presentation.dispose();
}

I detta läge laddas inte bildinnehållet. Bilder, masterbilder, layouter, former, media och andra presentationsobjekt är otillgängliga. Applikationer bör alltid kontrollera IProtectionManager.isOnlyDocumentPropertiesLoaded innan de utför en operation som kräver hela presentationsobjektmodellen.

Uppdatera egenskaper för en krypterad presentation

För en krypterad PPTX‑fil är en presentation som laddas i enbart dokumentegenskaps‑läge avsedd för att läsa offentlig metadata. Aspose.Slides kan inte spara förändrade egenskaper från det metadata‑endast‑objektet eftersom de offentliga egenskaperna måste vara konsekventa med motsvarande data i den krypterade presentationen. En uppdatering kräver därför rätt öppningslösenord och en fullständig laddning.

Följande exempel öppnar presentationen med LoadOptions.setPassword, uppdaterar offentliga inbyggda egenskaper och sparar resultatet. Det använder sedan IPresentationInfo.isEncrypted för att verifiera att krypteringen bevaras och öppnar den offentliga metadata igen utan lösenord för att verifiera de nya värdena:

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;
import com.aspose.slides.SaveFormat;

final String inputPath = "public-properties-encrypted.pptx";
final String outputPath = "updated-public-properties-encrypted.pptx";

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation(inputPath, loadOptions);
try {
    presentation.getDocumentProperties().setTitle("Updated Product Roadmap");
    presentation.getDocumentProperties().setKeywords("roadmap, planning, indexed");
    presentation.save(outputPath, SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(outputPath);
System.out.println("The presentation is encrypted: " + presentationInfo.isEncrypted());

LoadOptions metadataLoadOptions = new LoadOptions();
metadataLoadOptions.setOnlyLoadDocumentProperties(true);

Presentation metadataPresentation = new Presentation(outputPath, metadataLoadOptions);
try {
    if (metadataPresentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
        System.out.println("Title: " + metadataPresentation.getDocumentProperties().getTitle());
        System.out.println("Keywords: " + metadataPresentation.getDocumentProperties().getKeywords());
    } else {
        System.out.println("The presentation was not loaded in document-properties-only mode.");
    }
} finally {
    metadataPresentation.dispose();
}

Om en applikation inte får dekryptera eller ladda presentationsinnehållet måste den behandla offentliga egenskaper i en krypterad PPTX‑fil som skrivskyddade.

Komma åt inbyggda egenskaper

Dessa egenskaper som exponeras av objektet IDocumentProperties omfattar: Creator (Author), Description, Keywords, Created (Creation Date), Modified (Modification Date), Printed (Last Print Date), LastModifiedBy, Keywords, SharedDoc (Is shared between different producers?), PresentationFormat, Subject och Title.

import com.aspose.slides.*;

// Skapa en instans av Presentation-klassen som representerar presentationen
Presentation pres = new Presentation("Presentation.pptx");
try {
    // Skapa en referens till IDocumentProperties-objektet som är associerat med Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Visa de inbyggda egenskaperna
    System.out.println("Category : " + dp.getCategory());
    System.out.println("Current Status : " + dp.getContentStatus());
    System.out.println("Creation Date : " + dp.getCreatedTime());
    System.out.println("Author : " + dp.getAuthor());
    System.out.println("Description : " + dp.getComments());
    System.out.println("KeyWords : " + dp.getKeywords());
    System.out.println("Last Modified By : " + dp.getLastSavedBy());
    System.out.println("Supervisor : " + dp.getManager());
    System.out.println("Modified Date : " + dp.getLastSavedTime());
    System.out.println("Presentation Format : " + dp.getPresentationFormat());
    System.out.println("Last Print Date : " + dp.getLastPrinted());
    System.out.println("Is Shared between producers : " + dp.getSharedDoc());
    System.out.println("Subject : " + dp.getSubject());
    System.out.println("Title : " + dp.getTitle());
} finally {
    if (pres != null) pres.dispose();
}

Ändra inbyggda egenskaper

Att ändra de inbyggda egenskaperna för presentationsfiler är lika enkelt som att komma åt dem. Du kan helt enkelt tilldela ett strängvärde till önskad egenskap så ändras egenskapens värde. I exemplet nedan har vi demonstrerat hur man kan ändra de inbyggda dokumentegenskaperna för presentationsfilen med Aspose.Slides för Android via Java.

import com.aspose.slides.*;

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Skapa en referens till IDocumentProperties-objektet som är associerat med Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Ställ in de inbyggda egenskaperna
    dp.setAuthor("Aspose.Slides for Android via Java");
    dp.setTitle("Modifying Presentation Properties");
    dp.setSubject("Aspose Subject");
    dp.setComments("Aspose Description");
    dp.setManager("Aspose Manager");
    
    // Spara din presentation till en fil
    pres.save("DocProps.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Detta exempel ändrar de inbyggda egenskaperna för presentationen som kan visas nedan:

Inbyggda dokumentegenskaper efter ändring **
todo:image_alt_text

Lägg till anpassade dokumentegenskaper

Aspose.Slides för Android via Java låter också utvecklare lägga till anpassade värden för presentationsdokumentegenskaper. Exemplet nedan lägger till tre anpassade egenskaper, söker sedan upp namnet lagrat på index 2 och tar bort den egenskapen, så den sparade presentationen behåller två av dem. Anpassade egenskaper indexeras i alfabetisk ordning, inte i den ordning de lades till.

import com.aspose.slides.*;

Presentation pres = new Presentation();
try {
    // Hämtar dokumentegenskaper
    IDocumentProperties dProps = pres.getDocumentProperties();
    
    // Lägger till anpassade egenskaper
    dProps.set_Item("New Custom", 12);
    dProps.set_Item("My Name", "Mudassir");
    dProps.set_Item("Custom", 124);
    
    // Hämtar egenskapsnamn på ett specifikt index
    String getPropertyName = dProps.getCustomPropertyName(2);
    
    // Tar bort vald egenskap
    dProps.removeCustomProperty(getPropertyName);
    
    // Sparar presentation
    pres.save("CustomDemo.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Anpassade dokumentegenskaper tillagda **
todo:image_alt_text

Komma åt och ändra anpassade egenskaper

Aspose.Slides för Android via Java låter också utvecklare komma åt värdena för anpassade egenskaper. Ett exempel ges nedan som visar hur du kan komma åt och ändra alla dessa anpassade egenskaper för en presentation.

import com.aspose.slides.*;

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Skapa en referens till DocumentProperties-objektet som är associerat med Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Åtkomst och ändring av anpassade egenskaper
    for (int i = 0; i < dp.getCountOfCustomProperties(); i++) {
        // Visa namn och värden för anpassade egenskaper
        System.out.println("Custom Property Name : " + dp.getCustomPropertyName(i));
        System.out.println("Custom Property Value : " + dp.get_Item(dp.getCustomPropertyName(i)));
    
        // Ändra värden för anpassade egenskaper
        dp.set_Item(dp.getCustomPropertyName(i), "New Value " + (i + 1));
    }
    
    // Spara din presentation till en fil
    pres.save("CustomDemoModified.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Detta exempel ändrar de anpassade egenskaperna för PPTX presentationen. Följande figurer visar presentationens anpassade egenskaper före och efter ändring:

Anpassade egenskaper före ändring **
todo:image_alt_text
Anpassade egenskaper efter ändring **
todo:image_alt_text

Avancerade dokumentegenskaper

De två nya metoderna ReadDocumentProperties och UpdateDocumentProperties har lagts till i IPresentationInfo‑gränssnittet. De ger snabb åtkomst till dokumentegenskaper och möjliggör att ändra och uppdatera egenskaper utan att ladda en hel presentation.

Det typiska scenariot att ladda egenskaperna, ändra ett värde och uppdatera dokumentet kan implementeras på följande sätt:

import com.aspose.slides.*;

// Läs informationen om presentationen
IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx");

// Hämta de aktuella egenskaperna
IDocumentProperties props = info.readDocumentProperties();

// Sätt de nya värdena för författare och titel
props.setAuthor("New Author");
props.setTitle("New Title");

// Uppdatera presentationen med nya värden
info.updateDocumentProperties(props);
info.writeBindedPresentation("presentation.pptx");

Det finns ett annat sätt att använda egenskaper från en viss presentation som mall för att uppdatera egenskaper i andra presentationer:

import com.aspose.slides.*;

IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("template.pptx");
DocumentProperties template = (DocumentProperties) info.readDocumentProperties();

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

updateByTemplate("doc1.pptx", template);
updateByTemplate("doc2.odp", template);
updateByTemplate("doc3.ppt", template);
import com.aspose.slides.*;

private static void updateByTemplate(String path, IDocumentProperties template) 
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

En ny mall kan skapas från grunden och sedan användas för att uppdatera flera presentationer:

import com.aspose.slides.*;

DocumentProperties template = new DocumentProperties();

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

for (String path : new String[] { "doc1.pptx", "doc2.odp", "doc3.ppt" })
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

Ställ in språkgranskning

Aspose.Slides tillhandahåller egenskapen LanguageId (exponerad av klassen PortionFormat) för att låta dig ställa in språkgranskning för ett PowerPoint‑dokument. Språkgranskning är det språk som stavning och grammatik i PowerPoint kontrolleras för.

Den här Java‑koden visar hur du ställer in språkgranskning för en PowerPoint:

import com.aspose.slides.*;

Presentation pres = new Presentation("presentation.pptx");
try {
    AutoShape autoShape = (AutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
    paragraph.getPortions().clear();

    Portion newPortion = new Portion();

    IFontData font = new FontData("SimSun");
    IPortionFormat portionFormat = newPortion.getPortionFormat();
    portionFormat.setComplexScriptFont(font);
    portionFormat.setEastAsianFont(font);
    portionFormat.setLatinFont(font);

    portionFormat.setLanguageId("zh-CN"); // ange ID för ett språkgranskningsspråk

    newPortion.setText("1。");
    paragraph.getPortions().add(newPortion);
} finally {
    if (pres != null) pres.dispose();
}

Ställ in standardspråk

Den här Java‑koden visar hur du ställer in standardspråket för en hel PowerPoint‑presentation:

import com.aspose.slides.*;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");

Presentation pres = new Presentation(loadOptions);
try {
    // Lägger till en ny rektangulär form med text
    IAutoShape shp = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50);
    shp.getTextFrame().setText("New Text");

    // Kontrollerar första portionsspråket
    System.out.println(shp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId());
} finally {
    if (pres != null) pres.dispose();
}

Live‑exempel

Prova Aspose.Slides Metadata online‑appen för att se hur du arbetar med dokumentegenskaper via Aspose.Slides‑API:

Visa och redigera PowerPoint‑metadata

FAQ

Hur kan jag ta bort en inbyggd egenskap från en presentation?

Inbyggda egenskaper är en integrerad del av presentationen och kan inte tas bort helt. Däremot kan du antingen ändra deras värden eller sätta dem till tomma om den specifika egenskapen tillåter det.

Vad händer om jag lägger till en anpassad egenskap som redan finns?

Om du lägger till en anpassad egenskap som redan finns, kommer dess befintliga värde att skrivas över med det nya. Du behöver inte ta bort eller kontrollera egenskapen i förväg, eftersom Aspose.Slides automatiskt uppdaterar egenskapens värde.

Kan jag komma åt presentationsegenskaper utan att helt ladda presentationen?

Ja. Använd PresentationFactory.getPresentationInfo och sedan IPresentationInfo.readDocumentProperties för att läsa lagrad dokumentmetadata utan att skapa en Presentation‑instans. Se Build a Lightweight Presentation Inventory för ett komplett rapportexempel och format‑specifika begränsningar.

Kan jag läsa offentliga egenskaper i en krypterad presentation utan dess öppningslösenord?

Ja. Kryptering av dokumentegenskaper måste ha inaktiverats innan presentationen krypterades, och presentationen måste laddas i endast‑dokumentegenskaper‑läge.

Kan jag uppdatera en krypterad PPTX‑fil i endast‑dokumentegenskaper‑läge?

Nej. Offentliga och krypterade egenskapsdata måste vara konsekventa, så en uppdatering av en krypterad PPTX‑fil kräver att hela presentationen laddas med rätt öppningslösenord.