Hantera presentationsegenskaper på Android
Introduktion
Aspose.Slides för Android via Java stöder inbyggda och anpassade dokumentegenskaper. Använd dessa egenskaper för att läsa och uppdatera presentationsmetadata, såsom författare, titel och användardefinierade värden.
Aspose.Slides allows you to work with presentation document properties through the IDocumentProperties interface. An instance of this interface is returned by IPresentation.getDocumentProperties. The following examples show how to read, modify, and manage these properties.
Note
Aspose.Slides hanterar program- och producentmetadata när presentationer sparas; dessa fält identifierar programvaran som skapade resultatet.Hantera presentationsegenskaper
Dokumentegenskaper lagrar beskrivande information tillsammans med presentationsinnehållet. De delas in i två kategorier:
- Inbyggda egenskaper innehåller standardmetadata, såsom titel, författare och dokumentstatistik.
- Anpassade egenskaper lagrar användardefinierade namn/värde‑par.
Aspose.Slides för Android via Java ger åtkomst till båda kategorierna. I PowerPoint, välj File → Info → Properties → Advanced Properties för att inspektera dokumentmetadata. Dialogrutan grupperar information i flikar såsom Summary, Statistics, Contents och Custom. Använd fliken Custom för att hantera användardefinierade egenskaper.
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 efter att ha anropat IProtectionManager.setEncryptDocumentProperties med false, förblir dess dokumentegenskaper offentliga. En applikation kan då anropa LoadOptions.setOnlyLoadDocumentProperties med true och läsa den offentliga metadata utan att ange öppningslösenordet.
LoadOptions.setOnlyLoadDocumentProperties styr vad Aspose.Slides laddar; den avkrypterar ingenting. Om egenskaperna inkluderades i krypteringen misslyckas laddning utan lösenordet. Om presentationen inte är krypterad ignoreras alternativet och hela presentationen laddas.
Exemplet kräver en krypterad presentation vars dokumentegenskaper lämnades offentliga. Det 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 documentProperties = presentation.getDocumentProperties();
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Title: " + documentProperties.getTitle());
System.out.println("Keywords: " + documentProperties.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. Bildspel, 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.
Warning
Offentlig metadata kan avslöja författarnamn, titlar, ämnen, nyckelord, företagsinformation, kommentarer och anpassade värden. Kryptera känsliga egenskaper tillsammans med presentationen. Lämna dem offentliga endast när indexering, klassificering, sökning eller dokumenthanteringssystem har ett specifikt krav på att komma åt dem utan lösenord.Uppdatera egenskaper för en krypterad presentation
För en kryptad PPTX‑fil är en presentation som laddas efter att ha anropat LoadOptions.setOnlyLoadDocumentProperties med true avsedd för att läsa offentlig metadata. Aspose.Slides kan inte spara ändrade egenskaper från det objektet som bara innehåller metadata eftersom de offentliga egenskaperna måste vara konsekventa med motsvarande data i den kryptade presentationen. Uppdatering av dem kräver därför rätt öppningslösenord och en fullständig laddning.
Exemplet kräver en krypterad PPTX‑presentation med offentliga dokumentegenskaper och ett känt öppningslösenord. Det öppnar hela 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 utan lösenord för att verifiera de nya värdena:
import com.aspose.slides.IDocumentProperties;
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 {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.setTitle("Updated Product Roadmap");
documentProperties.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 har tillåtelse att dekryptera eller ladda presentationsinnehållet måste den behandla offentliga egenskaper i en krypterad PPTX‑fil som skrivskyddade.
Åtkomst till inbyggda egenskaper
Gränssnittet IDocumentProperties exponerar inbyggd metadata via getter‑metoder, inklusive getAuthor, getTitle och getCreatedTime. Detta exempel öppnar en befintlig presentation och skriver dess lagrade metadata till konsolen. Värdena beror på inmatningspresentationen; vissa fält kan vara tomma.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("AccessBuiltInProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
System.out.println("Category: " + documentProperties.getCategory());
System.out.println("Content status: " + documentProperties.getContentStatus());
System.out.println("Creation date: " + documentProperties.getCreatedTime());
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Comments: " + documentProperties.getComments());
System.out.println("Keywords: " + documentProperties.getKeywords());
System.out.println("Last modified by: " + documentProperties.getLastSavedBy());
System.out.println("Manager: " + documentProperties.getManager());
System.out.println("Modified date: " + documentProperties.getLastSavedTime());
System.out.println("Presentation format: " + documentProperties.getPresentationFormat());
System.out.println("Last print date: " + documentProperties.getLastPrinted());
System.out.println("Is shared between producers: " + documentProperties.getSharedDoc());
System.out.println("Subject: " + documentProperties.getSubject());
System.out.println("Title: " + documentProperties.getTitle());
} finally {
presentation.dispose();
}
Modifiera inbyggda egenskaper
För att uppdatera inbyggd metadata, använd setter‑metoderna på objektet som returneras av IPresentation.getDocumentProperties. Detta exempel öppnar en befintlig presentation, anropar setAuthor, setTitle, setSubject, setComments och setManager, och sparar sedan den uppdaterade presentationen med Presentation.save. Den sparade PPTX‑filen innehåller den nya metadata.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("ModifyBuiltInProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.setAuthor("Aspose.Slides for Android via Java");
documentProperties.setTitle("Manage PowerPoint Presentation Properties");
documentProperties.setSubject("Modify Built-in Properties");
documentProperties.setComments("Aspose description");
documentProperties.setManager("Aspose manager");
presentation.save("DocumentProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Hantera hyperlänkbasen
IDocumentProperties.getHyperlinkBase returnerar dokumentnivåns bas för relativa hyperlänkar. Använd IDocumentProperties.setHyperlinkBase för att ändra eller rensa den. Detta är användbart när en presentation och dess länkade filer flyttas till en annan plats. Det är separat från en enskild hyperlänks IHyperlink.getExternalUrl: att ändra basen skriver inte om de lagrade länbadresserna eller ändrar absoluta destinationer.
Exemplet kräver en presentation som innehåller både en relativ länk, t.ex. target.html, och en absolut länk, t.ex. https://example.org/absolute.html. Det läser den befintliga basen, tilldelar en ny basadress och sparar samt öppnar presentationen igen för att kontrollera värdet. Därefter rensar det basen med en tom sträng och verifierar det tomma värdet i en separat sparad fil. Ersätt exempelbasadressen med platsen för dina länkade filer.
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("hyperlinks.pptx");
try {
System.out.println("Original base: " + presentation.getDocumentProperties().getHyperlinkBase());
final String newBase = "https://example.com/new/";
presentation.getDocumentProperties().setHyperlinkBase(newBase);
presentation.save("hyperlinks-updated.pptx", SaveFormat.Pptx);
Presentation updatedPresentation = new Presentation("hyperlinks-updated.pptx");
try {
System.out.println("Base preserved: " + newBase.equals(updatedPresentation.getDocumentProperties().getHyperlinkBase()));
updatedPresentation.getDocumentProperties().setHyperlinkBase("");
updatedPresentation.save("hyperlinks-cleared.pptx", SaveFormat.Pptx);
Presentation clearedPresentation = new Presentation("hyperlinks-cleared.pptx");
try {
System.out.println("Base cleared: " + "".equals(clearedPresentation.getDocumentProperties().getHyperlinkBase()));
} finally {
clearedPresentation.dispose();
}
} finally {
updatedPresentation.dispose();
}
} finally {
presentation.dispose();
}
De två verifieringsmeddelandena bör skriva ut true. Att rensa basen lämnar de enskilda hyperlänkadresserna intakta.
En relativ länk till target.pptx öppnade old/target.pptx när basen pekade på mappen old. Efter att ha ändrat basen till mappen new, sparat och öppnat presentationen igen, öppnade samma länk new/target.pptx. En absolut länk fortsatte att öppna samma fil. Testa dina relativa länkar i PowerPoint före och efter att du flyttar presentationen eller ändrar dess bas.
Lägg till anpassade presentationsegenskaper
Anpassade egenskaper lagrar metadata som saknar motsvarande inbyggt fält. Metoden IDocumentProperties.set_Item låter dig tilldela ett värde via egenskapsnamn. Detta exempel skapar en presentation, lägger till två textvärden och ett heltalsversionsvärde, och sparar presentationen med Presentation.save. Att tilldela ett värde till ett befintligt namn ersätter den egenskapens värde.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation();
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.set_Item("Reviewed by", "John Smith");
documentProperties.set_Item("Confidentiality level", "Internal");
documentProperties.set_Item("Document version", 2);
presentation.save("CustomDocumentProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Åtkomst till och modifiera anpassade egenskaper
Detta exempel öppnar en presentation som innehåller anpassade egenskaper och använder getCountOfCustomProperties för att iterera över dem. getCustomPropertyName accepterar ett nollbaserat index och returnerar namnet som används av IDocumentProperties.set_Item. Exemplet skriver ut varje ursprungligt namn och värde, ersätter varje värde med en numrerad sträng oavsett dess ursprungliga typ, och sparar ändringarna. Om det inte finns några anpassade egenskaper gör loopen inga förändringar.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("AccessAndModifyProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
for (int i = 0; i < documentProperties.getCountOfCustomProperties(); i++) {
String propertyName = documentProperties.getCustomPropertyName(i);
Object propertyValue = documentProperties.get_Item(propertyName);
System.out.println("Custom property name: " + propertyName);
System.out.println("Custom property value: " + propertyValue);
documentProperties.set_Item(propertyName, "New Value " + (i + 1));
}
presentation.save("CustomProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Live‑exempel
Prova den Visa & redigera PowerPoint‑metadata online‑appen för att se hur du arbetar med dokumentegenskaper med hjälp av Aspose.Slides‑API:n:
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. Du kan dock 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 ladda hela presentationen?
Ja. Använd PresentationFactory.getPresentationInfo och sedan IPresentationInfo.readDocumentProperties för att läsa lagrad dokumentmetadata utan att skapa en Presentation‑instans. Se Bygg ett lättviktigt presentationsinventarium för ett komplett rapportexempel och format‑specifika begränsningar.
Kan jag läsa offentliga egenskaper för en krypterad presentation utan dess öppningslösenord?
Ja. Presentationen måste ha krypterats efter att ha anropat IProtectionManager.setEncryptDocumentProperties med false, och den måste laddas efter att ha anropat LoadOptions.setOnlyLoadDocumentProperties med true.
Kan jag uppdatera en krypterad PPTX‑fil i endast‑dokumentegenskaper‑läge?
Nej. Offentliga och krypterade egenskapsdata måste förbli konsekventa, så för att uppdatera en krypterad PPTX‑fil krävs att hela presentationen laddas med rätt öppningslösenord.
