Správa vlastností prezentace v Java

Úvod

Aspose.Slides podporuje dva typy vlastností dokumentu: Vestavěné a Vlastní. Oba typy vlastností lze snadno přistupovat a spravovat pomocí API Aspose.Slides.

Aspose.Slides umožňuje pracovat s vlastnostmi prezentačního dokumentu prostřednictvím rozhraní IDocumentProperties. Instance tohoto rozhraní je vrácena metodou IPresentation.getDocumentProperties. Následující příklady ukazují, jak číst, upravovat a spravovat tyto vlastnosti.

Vlastnosti dokumentu v PowerPointu

Microsoft PowerPoint 2007 umožňuje spravovat vlastnosti dokumentu souborů prezentace. Stačí kliknout na ikonu Office a poté na položku Prepare | Properties | Advanced Properties v nabídce Microsoft PowerPoint 2007, jak je znázorněno níže:

Výběr položky nabídky Advanced Properties ** **
todo:image_alt_text
Po výběru položky Advanced Properties se zobrazí dialogové okno, které umožňuje spravovat vlastnosti dokumentu souboru PowerPoint, jak je ukázáno na následujícím obrázku:
Dialog Vlastností ** **
todo:image_alt_text
V tomto Dialogu Vlastností můžete vidět mnoho karet, jako jsou General, Summary, Statistics, Contents a Custom. Všechny tyto karty umožňují konfigurovat různé typy informací souvisejících se soubory PowerPoint. Karta Custom slouží ke správě vlastních (custom) vlastností souborů PowerPoint.

Práce s vlastnostmi dokumentu pomocí Aspose.Slides pro Java

Jak jsme již dříve popsali, Aspose.Slides pro Java podporuje dva druhy vlastností dokumentu: Vestavěné a Vlastní. Vývojáři tak mohou přistupovat k oběma druhům vlastností pomocí API Aspose.Slides pro Java. Aspose.Slides pro Java poskytuje třídu IDocumentProperties, která představuje vlastnosti dokumentu spojené s prezentačním souborem prostřednictvím vlastnosti Presentation.DocumentProperties.

Vývojáři mohou použít vlastnost IDocumentProperties, která je vystavena objektem Presentation, k přístupu k vlastnostem dokumentu prezentačních souborů, jak je popsáno níže:

Čtení veřejných vlastností z šifrované prezentace

Otevírací heslo obvykle chrání jak obsah prezentace, tak i vlastnosti dokumentu. Když je prezentace šifrována předáním hodnoty false metodě IProtectionManager.setEncryptDocumentProperties, její vlastnosti dokumentu zůstávají veřejné. Aplikace pak může předat true metodě LoadOptions.setOnlyLoadDocumentProperties a přečíst veřejná metadata bez zadání otevíracího hesla.

Možnost načtení pouze vlastností dokumentu řídí, co Aspose.Slides načte; nic ne‑deš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.

Následující příklad ověřuje režim načítání pomocí IProtectionManager.isOnlyDocumentPropertiesLoaded a poté čte vestavěné vlastnosti skrze 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();
}

V tomto režimu není načítán obsah snímků. Snímky, mastery, rozvržení, tvary, média a další objekty prezentace nejsou dostupné. Aplikace by měly vždy před provedením operace vyžadující kompletní objektový model prezentace zkontrolovat IProtectionManager.isOnlyDocumentPropertiesLoaded.

Aktualizace vlastností šifrované prezentace

Pro šifrovaný soubor PPTX je prezentace načtená v režimu pouze vlastností dokumentu určena k čtení veřejných metadat. Aspose.Slides nemůže uložit změněné vlastnosti z tohoto objektu pouze s metadaty, protože veřejné vlastnosti musí zůstat v souladu s odpovídajícími údaji uvnitř šifrované prezentace. Aktualizace proto vyžaduje správné otevírací heslo a úplné načtení.

Následující příklad otevře prezentaci pomocí LoadOptions.setPassword, aktualizuje veřejné vestavěné vlastnosti a uloží výsledek. Pak použije IPresentationInfo.isEncrypted k ověření, že šifrování zůstalo zachováno, a znovu otevře veřejná metadata bez hesla, aby ověřil nové hodnoty:

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

Pokud aplikace nemá oprávnění dešifrovat nebo načíst obsah prezentace, musí s veřejnými vlastnostmi šifrovaného souboru PPTX zacházet jako s jen‑ke‑čtení.

Přístup k vestavěným vlastnostem

Tyto vlastnosti, jak je vystavuje objekt IDocumentProperties, zahrnují: Creator (Autor), Description, Keywords, Created (Datum vytvoření), Modified (Datum úpravy), Printed (Datum posledního tisku), LastModifiedBy, SharedDoc (Je sdíleno mezi různými tvůrci?), PresentationFormat, Subject a Title.

import com.aspose.slides.*;

// Vytvořte instanci třídy Presentation, která představuje prezentaci
Presentation pres = new Presentation("Presentation.pptx");
try {
    // Vytvořte odkaz na objekt IDocumentProperties spojený s prezentací
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Zobrazte vestavěné vlastnosti
    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();
}

Modifikace vestavěných vlastností

Úprava vestavěných vlastností prezentačních souborů je stejně snadná jako jejich přístup. Jednoduše přiřadíte řetězcovou hodnotu k libovolné požadované vlastnosti a hodnota se upraví. V níže uvedeném příkladu demonstrujeme, jak lze modifikovat vestavěné vlastnosti dokumentu prezentace pomocí Aspose.Slides pro Java.

import com.aspose.slides.*;

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Vytvořte odkaz na objekt IDocumentProperties spojený s prezentací
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Nastavte vestavěné vlastnosti
    dp.setAuthor("Aspose.Slides for Java");
    dp.setTitle("Modifying Presentation Properties");
    dp.setSubject("Aspose Subject");
    dp.setComments("Aspose Description");
    dp.setManager("Aspose Manager");
    
    // Uložte prezentaci do souboru
    pres.save("DocProps.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Tento příklad upravuje vestavěné vlastnosti prezentace, jak je znázorněno níže:

Vestavěné vlastnosti dokumentu po úpravě ** **
todo:image_alt_text

Přidání vlastních vlastností dokumentu

Aspose.Slides pro Java také umožňuje vývojářům přidávat vlastní hodnoty pro vlastnosti dokumentu prezentace. Níže uvedený příklad přidá tři vlastní vlastnosti, poté vyhledá název uložený na indexu 2 a tuto vlastnost odstraní, takže uložená prezentace si ponechá dvě z nich. Vlastní vlastnosti jsou indexovány abecedně, nikoli v pořadí, v jakém byly přidány.

import com.aspose.slides.*;

Presentation pres = new Presentation();
try {
    // Získání vlastností dokumentu
    IDocumentProperties dProps = pres.getDocumentProperties();
    
    // Přidání vlastních vlastností
    dProps.set_Item("New Custom", 12);
    dProps.set_Item("My Name", "Mudassir");
    dProps.set_Item("Custom", 124);
    
    // Získání názvu vlastnosti na konkrétním indexu
    String getPropertyName = dProps.getCustomPropertyName(2);
    
    // Odstranění vybrané vlastnosti
    dProps.removeCustomProperty(getPropertyName);
    
    // Uložení prezentace
    pres.save("CustomDemo.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Přidané vlastní vlastnosti dokumentu ** **
todo:image_alt_text

Přístup a úprava vlastních vlastností

Aspose.Slides pro Java také umožňuje vývojářům přistupovat k hodnotám vlastních vlastností. Níže je uveden příklad, který ukazuje, jak můžete přistupovat a upravovat všechny tyto vlastní vlastnosti pro prezentaci.

import com.aspose.slides.*;

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Vytvořte odkaz na objekt DocumentProperties spojený s prezentací
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Přístup a úprava vlastních vlastností
    for (int i = 0; i < dp.getCountOfCustomProperties(); i++) {
        // Zobrazte názvy a hodnoty vlastních vlastností
        System.out.println("Custom Property Name : " + dp.getCustomPropertyName(i));
        System.out.println("Custom Property Value : " + dp.get_Item(dp.getCustomPropertyName(i)));
    
        // Upravte hodnoty vlastních vlastností
        dp.set_Item(dp.getCustomPropertyName(i), "New Value " + (i + 1));
    }
    
    // Uložte prezentaci do souboru
    pres.save("CustomDemoModified.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Tento příklad upravuje vlastní vlastnosti PPTX prezentace. Následující obrázky ukazují vlastní vlastnosti prezentace před a po úpravě:

Vlastní vlastnosti před úpravou ** **
todo:image_alt_text
Vlastní vlastnosti po úpravě ** **
todo:image_alt_text

Pokročilé vlastnosti dokumentu

Dvě nové metody ReadDocumentProperties a UpdateDocumentProperties byly přidány do rozhraní IPresentationInfo. Poskytují rychlý přístup k vlastnostem dokumentu a umožňují měnit a aktualizovat vlastnosti bez načítání celé prezentace.

Typický scénář načtení vlastností, změna hodnoty a aktualizace dokumentu lze implementovat následujícím způsobem:

import com.aspose.slides.*;

// načíst informace o prezentaci
IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx");

// obtain the current properties
IDocumentProperties props = info.readDocumentProperties();

// set the new values of Author and Title fields
props.setAuthor("New Author");
props.setTitle("New Title");

// update the presentation with a new values
info.updateDocumentProperties(props);
info.writeBindedPresentation("presentation.pptx");

Existuje další způsob, jak použít vlastnosti konkrétní prezentace jako šablonu pro aktualizaci vlastností v jiných prezentacích:

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

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

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

Nová šablona může být vytvořena od nuly a poté použita k aktualizaci více prezentací:

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

Nastavení jazykové kontroly (Proofing Language)

Aspose.Slides poskytuje vlastnost LanguageId (vystavovanou třídou PortionFormat) pro nastavení jazyka kontroly pravopisu a gramatiky v dokumentu PowerPoint.

Tento Java kód ukazuje, jak nastavit jazyk kontroly pravopisu pro PowerPoint:

import com.aspose.slides.*;

String pptxFileName = "presentation.pptx";

Presentation pres = new Presentation(pptxFileName);
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"); // nastavit ID jazyka pro kontrolu pravopisu

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

Nastavení výchozího jazyka

Tento Java kód ukazuje, jak nastavit výchozí jazyk pro celou prezentaci PowerPoint:

import com.aspose.slides.*;

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

Presentation pres = new Presentation(loadOptions);
try {
    // Přidá nový obdélníkový tvar s textem
    IAutoShape shp = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50);
    shp.getTextFrame().setText("New Text");

    // Kontroluje jazyk první části
    System.out.println(shp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId());
} finally {
    if (pres != null) pres.dispose();
}

Živý příklad

Vyzkoušejte online aplikaci Aspose.Slides Metadata a zjistěte, jak pracovat s vlastnostmi dokumentu pomocí Aspose.Slides API:

View & Edit PowerPoint Metadata

Často kladené otázky (FAQ)

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ý řetězec, pokud to daná 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 k přečtení uložených metadat dokumentu bez vytváření instance Presentation. Viz Build a Lightweight Presentation Inventory pro kompletní příklad reportování a omezení specifická pro formáty.

Mohu přečíst veřejné vlastnosti šifrované prezentace bez jejího otevíracího hesla?

Ano. Šifrování vlastností dokumentu muselo být před šifrováním prezentace vypnuto a prezentace musí být načtena v režimu pouze vlastností dokumentu.

Mohu aktualizovat šifrovaný soubor PPTX v režimu pouze vlastností dokumentu?

Ne. Veřejná a šifrovaná data vlastností musí zůstat konzistentní, takže aktualizace šifrovaného souboru PPTX vyžaduje načtení celé prezentace se správným otevíracím heslem.