Správa vlastností prezentace v Javě
Úvod
Aspose.Slides for Java podporuje vestavěné a vlastní vlastnosti dokumentu. Použijte tyto vlastnosti k čtení a aktualizaci metadat prezentace, jako je autor, název a uživatelem definované hodnoty.
Aspose.Slides umožňuje pracovat s vlastnostmi dokumentu prezentace pomocí rozhraní IDocumentProperties . Instance tohoto rozhraní je vrácena metodou IPresentation.getDocumentProperties . Následující příklady ukazují, jak tyto vlastnosti číst, upravovat a spravovat.
Note
Aspose.Slides spravuje metadata aplikace a výrobce při ukládání prezentací; tato pole identifikují software, který vytvořil výstup.Spravovat vlastnosti prezentace
Vlastnosti dokumentu ukládají popisné informace vedle obsahu prezentace. Rozdělují se do dvou kategorií:
- Vestavěné vlastnosti obsahují standardní metadata, jako je název, autor a statistiky dokumentu.
- Vlastní vlastnosti uchovávají uživatelem definované páry název/hodnota.
Aspose.Slides for Java poskytuje přístup k oběma kategoriím. V PowerPointu vyberte File → Info → Properties → Advanced Properties pro prohlížení metadat dokumentu. Dialog seskupuje informace do záložek jako Summary, Statistics, Contents a Custom. Použijte záložku Custom pro správu uživatelem definovaných vlastností.
Číst veřejné vlastnosti z šifrované prezentace
Obvykle otevírací heslo chrání jak obsah prezentace, tak vlastnosti dokumentu. Když je prezentace šifrována po volání IProtectionManager.setEncryptDocumentProperties s hodnotou false, její vlastnosti dokumentu zůstávají veřejné. Aplikace pak může zavolat LoadOptions.setOnlyLoadDocumentProperties s hodnotou true a číst veřejná metadata bez zadání otevíracího hesla.
LoadOptions.setOnlyLoadDocumentProperties řídí, co Aspose.Slides načítá; nic neodšifruje. Pokud byly vlastnosti zahrnuty do šifrování, načtení bez hesla selže. Pokud prezentace není šifrována, volba je ignorována a načte se celá prezentace.
Příklad vyžaduje šifrovanou prezentaci, jejíž vlastnosti dokumentu byly ponechány veřejné. Ověřuje režim načítání pomocí IProtectionManager.isOnlyDocumentPropertiesLoaded a poté čte vestavěné vlastnosti pomocí 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();
}
V tomto režimu se nenačítá obsah snímků. Snímky, hlavní snímky, rozvržení, tvary, média a další objekty prezentace jsou nedostupné. Aplikace by měly vždy zkontrolovat IProtectionManager.isOnlyDocumentPropertiesLoaded , než provedou operaci vyžadující kompletní model objektů prezentace.
Warning
Veřejná metadata mohou odhalit jména autorů, názvy, předměty, klíčová slova, informace o společnosti, komentáře a vlastní hodnoty. Šifrujte citlivé vlastnosti společně s prezentací. Nechte je veřejné pouze pokud indexovací, klasifikační, vyhledávací nebo systémy pro správu dokumentů mají konkrétní požadavek na přístup k nim bez hesla.Aktualizovat vlastnosti šifrované prezentace
Pro šifrovaný soubor PPTX je prezentace načtená po volání LoadOptions.setOnlyLoadDocumentProperties s hodnotou true určena ke čtení veřejných metadat. Aspose.Slides nemůže uložit změněné vlastnosti z tohoto objektu jen s metadata, protože veřejné vlastnosti musí zůstat v souladu s odpovídajícími daty uvnitř šifrované prezentace. Jejich aktualizace proto vyžaduje správné otevírací heslo a kompletní načtení.
Příklad vyžaduje šifrovanou PPTX prezentaci s veřejnými vlastnostmi dokumentu a známým otevíracím heslem. Otevře kompletní prezentaci pomocí LoadOptions.setPassword , aktualizuje veřejné vestavěné vlastnosti a uloží výsledek. Poté použije IPresentationInfo.isEncrypted , aby ověřil, že šifrování bylo zachováno, a znovu otevře veřejná metadata bez hesla pro ověření nových hodnot :
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();
}
Pokud aplikace nemá povoleno dešifrovat nebo načíst obsah prezentace, musí veřejné vlastnosti šifrovaného souboru PPTX považovat za pouze ke čtení.
Přístup k vestavěným vlastnostem
Rozhraní IDocumentProperties poskytuje vestavěná metadata pomocí metod pro získání hodnot, včetně getAuthor , getTitle a getCreatedTime . Tento příklad otevře existující prezentaci a vypíše její uložená metadata na konzoli. Hodnoty závisí na vstupní prezentaci; některá pole mohou být prázdná.
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();
}
Upravit vestavěné vlastnosti
Pro aktualizaci vestavěných metadat použijte metod setter na objektu vráceném metodou IPresentation.getDocumentProperties . Tento příklad otevře existující prezentaci, zavolá setAuthor , setTitle , setSubject , setComments a setManager , poté uloží aktualizovanou prezentaci pomocí Presentation.save . Uložený PPTX obsahuje nová 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 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();
}
Spravovat základ hypertextových odkazů
IDocumentProperties.getHyperlinkBase vrací úroveň dokumentu pro relativní hypertextové odkazy. Použijte IDocumentProperties.setHyperlinkBase , abyste jej změnili nebo vymazali. To je užitečné při přesunu prezentace a jejích propojených souborů na jiné místo. Je to oddělené od individuálního odkazu IHyperlink.getExternalUrl : změna základu nepřepíše uložené adresy odkazů ani nezmění absolutní cíle.
Příklad vyžaduje prezentaci obsahující jak relativní odkaz, například target.html, tak absolutní odkaz, například https://example.org/absolute.html. Přečte existující základ, přiřadí novou základní adresu a uloží a znovu otevře prezentaci pro kontrolu hodnoty. Poté vymaže základ prázdným řetězcem a ověří prázdnou hodnotu v samostatném uloženém souboru. Nahraďte ukázkovou základní adresu umístěním vašich propojených souborů.
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();
}
Dvě ověřovací zprávy by měly vytisknout true. Vymazání základu ponechá individuální adresy hypertextových odkazů nedotčené.
Relativní odkaz na target.pptx otevřel old/target.pptx, když základ ukazoval na složku old. Po změně základu na složku new, uložení a znovu otevření prezentace otevřel stejný odkaz new/target.pptx. Absolutní odkaz nadále otevřel stejný soubor. Otestujte své relativní odkazy v PowerPointu před a po přesunu prezentace nebo změně jejího základu.
Přidat vlastní vlastnosti prezentace
Vlastní vlastnosti ukládají metadata, pro která neexistuje odpovídající vestavěné pole. Metoda IDocumentProperties.set_Item umožňuje přiřadit hodnotu podle názvu vlastnosti. Tento příklad vytvoří prezentaci, přidá dva textové hodnoty a celočíselnou verzi a uloží prezentaci pomocí Presentation.save . Přiřazení hodnoty k existujícímu názvu nahradí hodnotu této vlastnosti.
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();
}
Přístup a úprava vlastních vlastností
Tento příklad otevře prezentaci obsahující vlastní vlastnosti a použije getCountOfCustomProperties , aby je prošel. getCustomPropertyName přijímá index od nuly a vrací název použitého v IDocumentProperties.set_Item . Příklad vypíše každý původní název a hodnotu, nahradí každou hodnotu číslovaným řetězcem bez ohledu na původní typ a uloží změny. Pokud neexistují žádné vlastní vlastnosti, smyčka neprovede žádné změny.
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();
}
Živý příklad
Vyzkoušejte online aplikaci View & Edit PowerPoint Metadata , abyste viděli, jak pracovat s vlastnostmi dokumentu pomocí API Aspose.Slides:
Často kladené otázky
Jak mohu odstranit vestavěnou vlastnost z prezentace?
Vestavěné vlastnosti jsou nedílnou součástí prezentace a nelze je zcela odstranit. Můžete však změnit jejich hodnoty nebo je nastavit na prázdné, pokud to konkrétní vlastnost umožňuje.
Co se stane, když přidám vlastní vlastnost, která již existuje?
Pokud přidáte vlastní vlastnost, která již existuje, její stávající hodnota bude přepsána novou. Nemusíte vlastnost předtím odstraňovat nebo kontrolovat, protože Aspose.Slides automaticky aktualizuje hodnotu vlastnosti.
Mohu přistupovat k vlastnostem prezentace bez úplného načtení prezentace?
Ano. Použijte PresentationFactory.getPresentationInfo a poté IPresentationInfo.readDocumentProperties , abyste přečetli uložená metadata dokumentu bez vytváření instance Presentation . Viz Build a Lightweight Presentation Inventory pro kompletní příklad sestavování zprávy a omezení specifická pro formát.
Mohu číst veřejné vlastnosti šifrované prezentace bez jejího otevíracího hesla?
Ano. Prezentace musí být šifrována po volání IProtectionManager.setEncryptDocumentProperties s hodnotou false a musí být načtena po volání LoadOptions.setOnlyLoadDocumentProperties s hodnotou true.
Mohu aktualizovat šifrovaný soubor PPTX v režimu pouze vlastnosti dokumentu?
Ne. Veřejná a šifrovaná data vlastností musejí zůstat konzistentní, takže aktualizace šifrovaného souboru PPTX vyžaduje načtení celé prezentace s správným otevíracím heslem.
