Beheer presentatie-eigenschappen in JavaScript
Inleiding
Aspose.Slides voor Node.js via Java ondersteunt standaard en aangepaste documenteigenschappen. Gebruik deze eigenschappen om presentatiemetadata te lezen en bij te werken, zoals de auteur, titel en door de gebruiker gedefinieerde waarden.
Aspose.Slides stelt je in staat om met documenteigenschappen van presentaties te werken via de DocumentProperties klasse. Een instantie van deze klasse wordt geretourneerd door Presentation.getDocumentProperties. De volgende voorbeelden laten zien hoe deze eigenschappen gelezen, gewijzigd en beheerd kunnen worden.
Note
Aspose.Slides beheert de toepassings- en producentmetadata bij het opslaan van presentaties; deze velden geven aan welke software de uitvoer heeft gegenereerd.Beheer presentatieweigenschappen
Documenteigenschappen slaan beschrijvende informatie op naast de inhoud van de presentatie. Ze behoren tot twee categorieën:
- Standaardeigenschappen bevatten standaardmetadata, zoals de titel, auteur en documentstatistieken.
- Aangepaste eigenschappen slaan door de gebruiker gedefinieerde naam/waarde-paren op.
Aspose.Slides voor Node.js via Java biedt toegang tot beide categorieën. In PowerPoint selecteer je Bestand → Info → Eigenschappen → Geavanceerde eigenschappen om de documentmetadata te inspecteren. Het dialoogvenster groepeert informatie in tabbladen zoals Samenvatting, Statistieken, Inhoud en Aangepast. Gebruik het tabblad Aangepast om door de gebruiker gedefinieerde eigenschappen te beheren.
Openbare eigenschappen lezen van een versleutelde presentatie
Een openingswachtwoord beschermt normaal zowel de inhoud van de presentatie als de documenteigenschappen. Wanneer een presentatie wordt versleuteld na het aanroepen van ProtectionManager.setEncryptDocumentProperties met false, blijven de documenteigenschappen openbaar. Een applicatie kan vervolgens LoadOptions.setOnlyLoadDocumentProperties aanroepen met true en de openbare metadata lezen zonder het openingswachtwoord op te geven.
LoadOptions.setOnlyLoadDocumentProperties bepaalt wat Aspose.Slides laadt; het decrypteert niets. Als de eigenschappen in de versleuteling waren opgenomen, mislukt het laden zonder wachtwoord. Is de presentatie niet versleuteld, dan wordt de optie genegeerd en wordt de volledige presentatie geladen.
Het voorbeeld vereist een versleutelde presentatie waarvan de documenteigenschappen openbaar zijn gelaten. Het controleert de laadmodus via ProtectionManager.isOnlyDocumentPropertiesLoaded en leest vervolgens standaardeigenschappen via Presentation.getDocumentProperties:
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setOnlyLoadDocumentProperties(true);
const presentation = new slides.Presentation("public-properties-encrypted.pptx", loadOptions);
try {
if (presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
const documentProperties = presentation.getDocumentProperties();
console.log("Author: " + documentProperties.getAuthor());
console.log("Title: " + documentProperties.getTitle());
console.log("Keywords: " + documentProperties.getKeywords());
} else {
console.log("The presentation was not loaded in document-properties-only mode.");
}
} finally {
presentation.dispose();
}
In deze modus wordt de inhoud van de dia’s niet geladen. Dia’s, masters, lay-outs, vormen, media en andere presentatie‑objecten zijn niet beschikbaar. Applicaties moeten altijd ProtectionManager.isOnlyDocumentPropertiesLoaded controleren voordat ze een bewerking uitvoeren die het volledige presentatiemodel vereist.
Warning
Openbare metadata kan auteurnamen, titels, onderwerpen, trefwoorden, bedrijfsinformatie, opmerkingen en aangepaste waarden blootleggen. Versleutel gevoelige eigenschappen samen met de presentatie. Laat ze alleen openbaar wanneer indexering, classificatie, zoeken of document‑beheersystemen een specifieke vereiste hebben om er zonder wachtwoord toegang toe te krijgen.Eigenschappen van een versleutelde presentatie bijwerken
Voor een versleuteld PPTX‑bestand is een presentatie die is geladen na het aanroepen van LoadOptions.setOnlyLoadDocumentProperties met true bedoeld om openbare metadata te lezen. Aspose.Slides kan de gewijzigde eigenschappen van dat uitsluitend‑metadata‑object niet opslaan omdat de openbare eigenschappen consistent moeten blijven met de bijbehorende gegevens in de versleutelde presentatie. Het bijwerken hiervan vereist daarom het juiste openingswachtwoord en een volledige laadprocedure.
Het voorbeeld vereist een versleutelde PPTX‑presentatie met openbare documenteigenschappen en een bekend openingswachtwoord. Het opent de volledige presentatie met LoadOptions.setPassword, werkt openbare standaardeigenschappen bij en slaat het resultaat op. Vervolgens gebruikt het PresentationInfo.isEncrypted om te verifiëren dat de versleuteling behouden blijft en opent het de openbare metadata opnieuw zonder wachtwoord om de nieuwe waarden te controleren:
const slides = require("aspose.slides.via.java");
const inputPath = "public-properties-encrypted.pptx";
const outputPath = "updated-public-properties-encrypted.pptx";
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation(inputPath, loadOptions);
try {
const documentProperties = presentation.getDocumentProperties();
documentProperties.setTitle("Updated Product Roadmap");
documentProperties.setKeywords("roadmap, planning, indexed");
presentation.save(outputPath, slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
const presentationInfo = slides.PresentationFactory.getInstance().getPresentationInfo(outputPath);
console.log("The presentation is encrypted: " + presentationInfo.isEncrypted());
const metadataLoadOptions = new slides.LoadOptions();
metadataLoadOptions.setOnlyLoadDocumentProperties(true);
const metadataPresentation = new slides.Presentation(outputPath, metadataLoadOptions);
try {
if (metadataPresentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
console.log("Title: " + metadataPresentation.getDocumentProperties().getTitle());
console.log("Keywords: " + metadataPresentation.getDocumentProperties().getKeywords());
} else {
console.log("The presentation was not loaded in document-properties-only mode.");
}
} finally {
metadataPresentation.dispose();
}
Als een applicatie niet mag decrypteren of de inhoud van de presentatie laden, moet deze de openbare eigenschappen van een versleuteld PPTX‑bestand als alleen‑lezen behandelen.
Toegang tot standaardeigenschappen
De DocumentProperties klasse maakt standaardmetadata toegankelijk via getter‑methoden, waaronder getAuthor, getTitle en getCreatedTime. Dit voorbeeld opent een bestaande presentatie en print de opgeslagen metadata naar de console. De waarden hangen af van de ingevoerde presentatie; sommige velden kunnen leeg zijn.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("AccessBuiltInProperties.pptx");
try {
const documentProperties = presentation.getDocumentProperties();
console.log("Category: " + documentProperties.getCategory());
console.log("Content status: " + documentProperties.getContentStatus());
console.log("Creation date: " + documentProperties.getCreatedTime());
console.log("Author: " + documentProperties.getAuthor());
console.log("Comments: " + documentProperties.getComments());
console.log("Keywords: " + documentProperties.getKeywords());
console.log("Last modified by: " + documentProperties.getLastSavedBy());
console.log("Manager: " + documentProperties.getManager());
console.log("Modified date: " + documentProperties.getLastSavedTime());
console.log("Presentation format: " + documentProperties.getPresentationFormat());
console.log("Last print date: " + documentProperties.getLastPrinted());
console.log("Is shared between producers: " + documentProperties.getSharedDoc());
console.log("Subject: " + documentProperties.getSubject());
console.log("Title: " + documentProperties.getTitle());
} finally {
presentation.dispose();
}
Standaardeigenschappen wijzigen
Om standaardmetadata bij te werken, gebruik je de setter‑methoden op het object dat wordt geretourneerd door Presentation.getDocumentProperties. Dit voorbeeld opent een bestaande presentatie, roept setAuthor, setTitle, setSubject, setComments en setManager aan, en slaat vervolgens de bijgewerkte presentatie op met Presentation.save. De opgeslagen PPTX bevat de nieuwe metadata.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("ModifyBuiltInProperties.pptx");
try {
const documentProperties = presentation.getDocumentProperties();
documentProperties.setAuthor("Aspose.Slides for Node.js 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", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Beheer de hyperlinkbasis
DocumentProperties.getHyperlinkBase geeft de document‑niveau basis terug voor relatieve hyperlinks. Gebruik DocumentProperties.setHyperlinkBase om deze te wijzigen of te wissen. Dit is nuttig bij het verplaatsen van een presentatie en de gekoppelde bestanden naar een andere locatie. Het staat los van de afzonderlijke hyperlink’s Hyperlink.getExternalUrl: het wijzigen van de basis herschrijft niet de opgeslagen koppelingen of verandert absolute bestemmingen.
Het voorbeeld vereist een presentatie die zowel een relatieve link bevat, zoals target.html, als een absolute link, zoals https://example.org/absolute.html. Het leest de bestaande basis, kent een nieuw basisadres toe, slaat de presentatie op en opent deze opnieuw om de waarde te controleren. Vervolgens wist het de basis met een lege tekenreeks en verifieert de lege waarde in een apart opgeslagen bestand. Vervang het voorbeeld‑basisadres door de locatie van je gekoppelde bestanden.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("hyperlinks.pptx");
try {
console.log("Original base: " + presentation.getDocumentProperties().getHyperlinkBase());
const newBase = "https://example.com/new/";
presentation.getDocumentProperties().setHyperlinkBase(newBase);
presentation.save("hyperlinks-updated.pptx", slides.SaveFormat.Pptx);
const updatedPresentation = new slides.Presentation("hyperlinks-updated.pptx");
try {
console.log("Base preserved: " + (newBase === updatedPresentation.getDocumentProperties().getHyperlinkBase()));
updatedPresentation.getDocumentProperties().setHyperlinkBase("");
updatedPresentation.save("hyperlinks-cleared.pptx", slides.SaveFormat.Pptx);
const clearedPresentation = new slides.Presentation("hyperlinks-cleared.pptx");
try {
console.log("Base cleared: " + ("" === clearedPresentation.getDocumentProperties().getHyperlinkBase()));
} finally {
clearedPresentation.dispose();
}
} finally {
updatedPresentation.dispose();
}
} finally {
presentation.dispose();
}
De twee verificatieberichten moeten true weergeven. Het wissen van de basis laat de afzonderlijke hyperlink‑adressen onaangetast.
Een relatieve link naar target.pptx opende old/target.pptx toen de basis naar de old‑map wees. Na het wijzigen van de basis naar de new‑map, opslaan en de presentatie opnieuw openen, opende dezelfde link new/target.pptx. Een absolute link bleef hetzelfde bestand openen. Test je relatieve links in PowerPoint vóór en na het verplaatsen van de presentatie of het wijzigen van de basis.
Aangepaste presentatieweigenschappen toevoegen
Aangepaste eigenschappen slaan metadata op die geen overeenkomstig standaardveld hebben. De DocumentProperties.set_Item methode laat je een waarde toewijzen op basis van de eigenschapsnaam. Dit voorbeeld maakt een presentatie, voegt twee tekstwaarden en een gehele versie‑waarde toe, en slaat de presentatie op met Presentation.save. Een waarde toewijzen aan een bestaande naam vervangt de waarde van die eigenschap.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation();
try {
const 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", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Aangepaste eigenschappen openen en wijzigen
Dit voorbeeld opent een presentatie met aangepaste eigenschappen en gebruikt getCountOfCustomProperties om erover te itereren. getCustomPropertyName accepteert een nul‑gebaseerde index en retourneert de naam die wordt gebruikt door DocumentProperties.set_Item. Het voorbeeld print elke oorspronkelijke naam en waarde, vervangt elke waarde door een genummerde tekenreeks ongeacht het oorspronkelijke type, en slaat de wijzigingen op. Als er geen aangepaste eigenschappen zijn, brengt de lus geen veranderingen aan.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("AccessAndModifyProperties.pptx");
try {
const documentProperties = presentation.getDocumentProperties();
for (let i = 0; i < documentProperties.getCountOfCustomProperties(); i++) {
const propertyName = documentProperties.getCustomPropertyName(i);
const propertyValue = documentProperties.get_Item(propertyName);
console.log("Custom property name: " + propertyName);
console.log("Custom property value: " + propertyValue);
documentProperties.set_Item(propertyName, "New Value " + (i + 1));
}
presentation.save("CustomProperties_output.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Live‑voorbeeld
Probeer de online app View & Edit PowerPoint Metadata om te zien hoe je met documenteigenschappen kunt werken via de Aspose.Slides‑API:
FAQ
Hoe kan ik een standaardeigenschap uit een presentatie verwijderen?
Standaardeigenschappen maken een integraal onderdeel van de presentatie uit en kunnen niet volledig worden verwijderd. Je kunt ze echter wel wijzigen of, indien de specifieke eigenschap dat toelaat, leeg maken.
Wat gebeurt er als ik een aangepaste eigenschap toevoeg die al bestaat?
Als je een aangepaste eigenschap toevoegt die al bestaat, wordt de bestaande waarde overschreven door de nieuwe. Je hoeft de eigenschap niet vooraf te verwijderen of te controleren, omdat Aspose.Slides automatisch de waarde van de eigenschap bijwerkt.
Kan ik presentatieweigenschappen benaderen zonder de presentatie volledig te laden?
Ja. Gebruik PresentationFactory.getPresentationInfo en vervolgens PresentationInfo.readDocumentProperties om de opgeslagen documentmetadata te lezen zonder een Presentation‑instantie te maken. Zie Build a Lightweight Presentation Inventory voor een volledig voorbeeld van rapportage en format‑specifieke beperkingen.
Kan ik openbare eigenschappen van een versleutelde presentatie lezen zonder het openingswachtwoord?
Ja. De presentatie moet zijn versleuteld nadat ProtectionManager.setEncryptDocumentProperties is aangeroepen met false, en moet worden geladen na het aanroepen van LoadOptions.setOnlyLoadDocumentProperties met true.
Kan ik een versleuteld PPTX‑bestand bijwerken in alleen‑documenteigenschappen‑modus?
Nee. Publieke en versleutelde eigenschapsgegevens moeten consistent blijven, dus het bijwerken van een versleuteld PPTX‑bestand vereist het laden van de volledige presentatie met het juiste openingswachtwoord.
