Travailler avec les propriétés du Document

Les propriétés du document permettent de stocker des informations utiles sur votre document. Ces propriétés peuvent être divisées en deux groupes:

  • Système ou intégré contenant des valeurs telles que le titre du document, le nom de l’auteur, les statistiques du document, etc.
  • Défini par l’utilisateur ou personnalisé, fourni sous forme de paires nom-valeur où l’utilisateur peut définir à la fois le nom et la valeur.

Il est utile de savoir que les informations sur l’API et le numéro de version sont directement écrites dans les documents de sortie. Par exemple, lors de la conversion d’un document en PDF, Aspose.Words remplit le champ “Application” avec " Aspose.Words" et le champ “PDF Producteur " avec “Aspose.Words pour C++ YY.M. N”, où YY.M.N est la version de Aspose.Words utilisée pour la conversion. Pour plus de détails, voir Nom du générateur ou du Producteur Inclus dans les Documents de sortie.

Accéder aux Propriétés du Document

Pour accéder aux propriétés du document dans Aspose.Words, utilisez:

BuiltInDocumentProperties

BuiltInDocumentProperties

La classe DocumentProperty vous permet d’obtenir le nom, la valeur et le type d’une propriété de document. Value renvoie un objet, mais il existe un ensemble de méthodes vous permettant d’obtenir la valeur de la propriété convertie en un type spécifique. Une fois que vous connaissez le type de la propriété, vous pouvez utiliser l’une des méthodes DocumentProperty.ToXXX, telles que DocumentProperty.ToString et DocumentProperty.ToInt, pour obtenir la valeur du type approprié.

L’exemple de code suivant montre comment énumérer toutes les propriétés intégrées et personnalisées dans un document:

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

Dans Microsoft Word, vous pouvez accéder aux propriétés du document à l’aide du menu “Fichier → Propriétés”.

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

Ajouter ou Supprimer des propriétés de Document

Vous ne pouvez pas ajouter ou supprimer des propriétés de document intégrées à l’aide de Aspose.Words. Vous pouvez uniquement modifier ou mettre à jour leurs valeurs.

Pour ajouter des propriétés de document personnalisées avec Aspose.Words, utilisez la méthode Add, en transmettant le nouveau nom de propriété et la valeur du type approprié. La méthode renvoie l’objet DocumentProperty nouvellement créé.

Pour supprimer des propriétés personnalisées, utilisez la méthode Remove, en lui transmettant le nom de la propriété à supprimer, ou la méthode RemoveAt pour supprimer la propriété par index. Vous pouvez également supprimer toutes les propriétés à l’aide de la méthode Clear.

L’exemple de code suivant vérifie si une propriété personnalisée avec un nom donné existe dans un document et ajoute quelques propriétés de document personnalisées supplémentaires:

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

L’exemple de code suivant montre comment supprimer une propriété de document personnalisée:

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

Mettre À Jour Les Propriétés Intégrées Du Document

Aspose.Words ne met pas automatiquement à jour les propriétés du document, comme Microsoft Word le fait avec certaines propriétés, mais fournit une méthode pour mettre à jour certaines propriétés statistiques intégrées du document. Appelez la méthode UpdateWordCount pour recalculer et mettre à jour les propriétés suivantes:

Créer une Nouvelle Propriété Personnalisée Liée au Contenu

Aspose.Words fournit la méthode AddLinkToContent pour créer une nouvelle propriété de document personnalisée liée au contenu. Cette propriété renvoie l’objet de propriété nouvellement créé ou null si le LinkSource n’est pas valide.

L’exemple de code suivant montre comment configurer un lien vers une propriété personnalisée:

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

Obtenir des Variables de Document

Vous pouvez obtenir une collection de variables de document à l’aide de la propriété Variables. Les noms et les valeurs des variables sont des chaînes.

L’exemple de code suivant montre comment énumérer les variables de document:

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

Supprimer des informations personnelles du Document

Si vous souhaitez partager un document Word avec d’autres personnes, vous souhaiterez peut-être supprimer des informations personnelles telles que le nom de l’auteur et la société. Pour ce faire, utilisez la propriété RemovePersonalInformation pour définir l’indicateur indiquant que Microsoft Word supprimera toutes les informations utilisateur des commentaires, des révisions et des propriétés du document lors de l’enregistrement du document.

L’exemple de code suivant montre comment supprimer des informations personnelles:

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