Werken met Documenteigenschappen

Met Documenteigenschappen kunt u nuttige informatie over uw document opslaan. Deze eigenschappen kunnen in twee groepen worden verdeeld:

  • Systeem of Ingebouwde die waarden zoals documenttitel, auteursnaam, documentstatistieken en anderen bevatten.
  • Door de gebruiker gedefinieerd of aangepast, verstrekt als naam-waarde paren waarbij de gebruiker zowel de naam als de waarde kan definiëren.

Het is handig om te weten dat informatie over API en versienummer rechtstreeks naar uitvoerdocumenten wordt geschreven. Bijvoorbeeld, bij het converteren van een document naar PDF, vult Aspose.Words het veld “Application” in met “Aspose.Words”, en het veld “PDF Producer” met “Aspose.Words voor C++ YY.M. n”, waarbij YY.M.N de versie van Aspose.Words is die voor conversie wordt gebruikt. Voor meer details, zie Naam van Generator of producent opgenomen in uitvoerdocumenten.

Access Document Eigenschappen

Voor toegang tot Documenteigenschappen in Aspose.Words gebruik:

BuiltInDocumentProperties

BuiltInDocumentProperties

Met de klasse DocumentProperty kunt u de naam, waarde en het type van een documenteigenschap ophalen. Value retourneert een object, maar er is een reeks methoden waarmee u de eigenschapswaarde kunt omzetten naar een specifiek type. Nadat u weet welk type de eigenschap is, kunt u een van de DocumentProperty.ToXXX - methoden gebruiken, zoals DocumentProperty.ToString en DocumentProperty.ToInt, om de waarde van het juiste type te verkrijgen.

Het volgende codevoorbeeld laat zien hoe u alle ingebouwde en aangepaste eigenschappen in een document kunt opsommen:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::String fileName = inputDataDir + u"Properties.doc";
System::SharedPtr<Document> doc = System::MakeObject<Document>(fileName);
std::cout << "1. Document name: " << fileName.ToUtf8String() << std::endl;
std::cout << "2. Built-in Properties" << std::endl;
for (System::SharedPtr<DocumentProperty> prop : System::IterateOver(doc->get_BuiltInDocumentProperties()))
{
std::cout << prop->get_Name().ToUtf8String() << " : " << prop->get_Value()->ToString().ToUtf8String() << std::endl;
}
std::cout << "3. Custom Properties" << std::endl;
for (System::SharedPtr<DocumentProperty> prop : System::IterateOver(doc->get_CustomDocumentProperties()))
{
std::cout << prop->get_Name().ToUtf8String() << " : " << prop->get_Value()->ToString().ToUtf8String() << std::endl;
}

In Microsoft Word kunt u Documenteigenschappen openen via het menu “Bestand → Eigenschappen”.

work-with-document-properties-aspose-words-cpp_1.png

Documenteigenschappen toevoegen of verwijderen

U kunt geen ingebouwde Documenteigenschappen toevoegen of verwijderen met Aspose.Words. U kunt alleen hun waarden wijzigen of bijwerken.

Als u aangepaste Documenteigenschappen wilt toevoegen met Aspose.Words, gebruikt u de methode Add, waarbij u de naam van de nieuwe eigenschap en de waarde van het juiste type doorgeeft. De methode retourneert het nieuw aangemaakte DocumentProperty object.

Als u aangepaste eigenschappen wilt verwijderen, gebruikt u de methode Remove, waarbij u de eigenschappennaam geeft om te verwijderen, of de methode RemoveAt om de eigenschap per index te verwijderen. U kunt ook alle eigenschappen verwijderen met de methode Clear.

Het volgende codevoorbeeld controleert of een aangepaste eigenschap met een gegeven naam in een document bestaat en voegt nog een paar aangepaste Documenteigenschappen toe:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc");
System::SharedPtr<CustomDocumentProperties> props = doc->get_CustomDocumentProperties();
if (props->idx_get(u"Authorized") == nullptr)
{
props->Add(u"Authorized", true);
props->Add(u"Authorized By", System::String(u"John Smith"));
props->Add(u"Authorized Date", System::DateTime::get_Today());
props->Add(u"Authorized Revision", doc->get_BuiltInDocumentProperties()->get_RevisionNumber());
props->Add(u"Authorized Amount", 123.45);
}

Het volgende codevoorbeeld laat zien hoe u een aangepaste documenteigenschap verwijdert:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc");
doc->get_CustomDocumentProperties()->Remove(u"Authorized Date");

Ingebouwde Documenteigenschappen Bijwerken

Aspose.Words werkt Documenteigenschappen niet automatisch bij, zoals Microsoft Word met sommige eigenschappen doet, maar biedt een methode om bepaalde statistische ingebouwde Documenteigenschappen bij te werken. Roep de methode UpdateWordCount aan om de volgende eigenschappen te herberekenen en bij te werken:

Een nieuwe aangepaste eigenschap maken die is gekoppeld aan inhoud

Aspose.Words biedt de methode AddLinkToContent om een nieuwe aangepaste documenteigenschap te maken die is gekoppeld aan inhoud. Deze eigenschap retourneert het nieuw aangemaakte eigenschapobject of null als de LinkSource ongeldig is.

Het volgende codevoorbeeld laat zien hoe u een koppeling naar een aangepaste eigenschap configureert:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"test.docx");
// Retrieve a list of all custom document properties from the file.
System::SharedPtr<CustomDocumentProperties> customProperties = doc->get_CustomDocumentProperties();
// Add linked to content property.
System::SharedPtr<DocumentProperty> customProperty = customProperties->AddLinkToContent(u"PropertyName", u"BookmarkName");
// Also, accessing the custom document property can be performed by using the property name.
customProperty = customProperties->idx_get(u"PropertyName");
// Check whether the property is linked to content.
bool isLinkedToContent = customProperty->get_IsLinkToContent();
// Get the source of the property.
System::String source = customProperty->get_LinkSource();
// Get the value of the property.
System::String value = customProperty->get_Value()->ToString();

Documentvariabelen Ophalen

U kunt een verzameling documentvariabelen verkrijgen met behulp van de eigenschap Variables. Variabele namen en waarden zijn strings.

Het volgende codevoorbeeld laat zien hoe documentvariabelen kunnen worden opgesomd:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// The path to the documents directory.
System::String inputDataDir = GetInputDataDir_WorkingWithDocument();
// Load the template document.
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"TestFile.doc");
System::String variables = u"";
for (System::Collections::Generic::KeyValuePair<System::String, System::String> entry : System::IterateOver(doc->get_Variables()))
{
System::String name = entry.get_Key();
System::String value = entry.get_Value();
if (variables == u"")
{
// Do something useful.
variables = System::String(u"Name: ") + name + u"," + u"Value: " + value;
}
else
{
variables = variables + u"Name: " + name + u"," + u"Value: " + value;
}
}

Persoonlijke informatie uit Document verwijderen

Als u een Word - document met andere personen wilt delen, wilt u mogelijk persoonlijke gegevens zoals de naam van de auteur en het bedrijf verwijderen. Gebruik hiervoor de eigenschap RemovePersonalInformation om de vlag in te stellen die aangeeft dat Microsoft Word alle gebruikersinformatie uit opmerkingen, revisies en Documenteigenschappen verwijdert bij het opslaan van het document.

Het volgende codevoorbeeld laat zien hoe u persoonlijke informatie kunt verwijderen:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc");
doc->set_RemovePersonalInformation(true);
System::String outputPath = outputDataDir + u"DocProperties.RemovePersonalInformation.docx";
doc->Save(outputPath);