Práce s vlastnostmi dokumentu

Vlastnosti dokumentu umožňují ukládat některé užitečné informace o dokumentu. Tyto vlastnosti lze rozdělit do dvou skupin:

  • Systém nebo vestavěný, které obsahují hodnoty, jako je název dokumentu, jméno autora, statistiky dokumentů a další.
  • Uživatelem definované nebo vlastní, poskytované jako páry název-hodnota, kde uživatel může definovat název i hodnotu.

Je užitečné vědět, že informace o API a čísle verze se zapisují přímo do výstupních dokumentů. Například při převodu dokumentu na PDF vyplní Aspose.Words pole “aplikace” pomocí “Aspose.Words” a pole “PDF Výrobce” pomocí “Aspose.Words pro C++ YY.M. N”, kde YY.M.N je verze Aspose.Words použitá pro převod. Další podrobnosti viz Název generátoru nebo výrobce obsažený ve výstupních dokumentech.

Vlastnosti Dokumentu Access

Pro přístup k vlastnostem dokumentu v Aspose.Words použijte:

BuiltInDocumentProperties

BuiltInDocumentProperties

Třída DocumentProperty umožňuje získat název, hodnotu a typ vlastnosti dokumentu. Value vrací objekt, ale existuje sada metod, které vám umožňují převést hodnotu vlastnosti na konkrétní typ. Poté, co se dozvíte, o jaký typ vlastnosti jde, můžete použít jednu z metod DocumentProperty.ToXXX, například DocumentProperty.ToString a DocumentProperty.ToInt, k získání hodnoty příslušného typu.

Následující příklad kódu ukazuje, jak vyjmenovat všechny vestavěné a vlastní vlastnosti v dokumentu:

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

V Microsoft Word můžete přistupovat k vlastnostem dokumentu pomocí nabídky “Soubor → Vlastnosti”.

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

Přidání nebo odebrání vlastností dokumentu

Předdefinované Vlastnosti dokumentu nelze přidat ani odebrat pomocí Aspose.Words. Můžete pouze změnit nebo aktualizovat jejich hodnoty.

Chcete-li přidat vlastní vlastnosti dokumentu pomocí Aspose.Words, použijte metodu Add a předejte nový název vlastnosti a hodnotu příslušného typu. Metoda vrací nově vytvořený objekt DocumentProperty.

Chcete-li odebrat vlastní vlastnosti, použijte metodu Remove a předejte jí název vlastnosti, kterou chcete odebrat, nebo metodu RemoveAt k odstranění vlastnosti podle indexu. Všechny vlastnosti Můžete také odebrat pomocí metody Clear.

Následující příklad kódu zkontroluje, zda v dokumentu existuje vlastní vlastnost s daným názvem, a přidá několik dalších vlastních vlastností dokumentu:

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

Následující příklad kódu ukazuje, jak odebrat vlastní vlastnost dokumentu:

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

Aktualizace Vestavěných Vlastností Dokumentu

Aspose.Words automaticky neaktualizuje Vlastnosti dokumentu, jako Microsoft Word u některých vlastností, ale poskytuje metodu aktualizace některých statistických vestavěných vlastností dokumentu. Zavolejte metodu UpdateWordCount a přepočítejte a aktualizujte následující vlastnosti:

Vytvoření nové vlastní vlastnosti propojené s obsahem

Aspose.Words poskytuje metodu AddLinkToContent k vytvoření nové vlastnosti vlastního dokumentu propojené s obsahem. Tato vlastnost vrací nově vytvořený objekt Vlastnosti nebo null, pokud je LinkSource neplatný.

Následující příklad kódu ukazuje, jak nakonfigurovat odkaz na vlastní vlastnost:

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

Získejte Proměnné Dokumentu

Kolekci proměnných dokumentu můžete získat pomocí vlastnosti Variables. Názvy a hodnoty proměnných jsou řetězce.

Následující příklad kódu ukazuje, jak vyjmenovat proměnné dokumentu:

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

Odstranění osobních údajů z dokumentu

Pokud chcete sdílet dokument Word s jinými lidmi, možná budete chtít odstranit osobní údaje, jako je jméno autora a společnost. Chcete-li to provést, použijte vlastnost RemovePersonalInformation k nastavení příznaku označujícího, že Microsoft Word odstraní všechny informace o uživateli z komentářů, revizí a vlastností dokumentu po uložení dokumentu.

Následující příklad kódu ukazuje, jak odstranit osobní údaje:

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