Read and Write Word File Properties
The following example shows how you can read and write built-in and custom Word document properties (metadata), using the GemBox.Document API in your C# and VB.NET applications.
using GemBox.Document;
using System;
class Program
{
static void Main()
{
// If using the Professional version, put your serial key below.
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
var document = DocumentModel.Load("%InputFileName%");
var documentProperties = document.DocumentProperties;
Console.WriteLine("# Built-in document properties:");
// Write built-in document properties.
documentProperties.BuiltIn[BuiltInDocumentProperty.Title] = "My Title";
documentProperties.BuiltIn[BuiltInDocumentProperty.DateLastSaved] = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ");
// Read built-in document properties.
foreach (var builtinProperty in documentProperties.BuiltIn)
Console.WriteLine($"{builtinProperty.Key,20}: {builtinProperty.Value}");
Console.WriteLine();
Console.WriteLine("# Custom document properties:");
// Write custom document properties.
documentProperties.Custom["My Custom Property 1"] = "My Custom Value";
documentProperties.Custom["My Custom Property 2"] = 123.4;
// Read custom document properties.
foreach (var customProperty in documentProperties.Custom)
Console.WriteLine($"{customProperty.Key,20}: {customProperty.Value,-20} [{customProperty.Value.GetType()}]");
}
}
Imports GemBox.Document
Imports System
Module Program
Sub Main()
' If using the Professional version, put your serial key below.
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
Dim document As DocumentModel = DocumentModel.Load("%InputFileName%")
Dim documentProperties = document.DocumentProperties
Console.WriteLine("# Built-in document properties:")
' Write built-in document properties.
documentProperties.BuiltIn(BuiltInDocumentProperty.Title) = "My Title"
documentProperties.BuiltIn(BuiltInDocumentProperty.DateLastSaved) = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ")
' Read built-in document properties.
For Each builtinProperty In documentProperties.BuiltIn
Console.WriteLine($"{builtinProperty.Key,20}: {builtinProperty.Value}")
Next
Console.WriteLine()
Console.WriteLine("# Custom document properties:")
' Write custom document properties.
documentProperties.Custom("My Custom Property 1") = "My Custom Value"
documentProperties.Custom("My Custom Property 2") = 123.4
' Read custom document properties.
For Each customProperty In documentProperties.Custom
Console.WriteLine($"{customProperty.Key,20}: {customProperty.Value,-20} [{customProperty.Value.GetType()}]")
Next
End Sub
End Module

Document properties contain some additional information and details about a file. It's also known as a Word file's metadata and can represent values like author, company, title, and subject. There are two types of document properties, The following example shows how you can update the document's properties and variables, and display their updated values with BuiltIn
and Custom
.Update Properties and Variables
Field
elements.using GemBox.Document;
using System.Linq;
class Program
{
static void Main()
{
// If using the Professional version, put your serial key below.
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
var document = DocumentModel.Load("%#PropertiesAndVariables.docx%");
// Update built-in and custom document properties.
document.DocumentProperties.BuiltIn[BuiltInDocumentProperty.Title] = "Updated Title";
document.DocumentProperties.Custom["Custom1"] = "Updated custom value 1!";
document.DocumentProperties.Custom["Custom2"] = "Updated custom value 2!";
// Update document variables.
document.Variables["Variable1"] = "Updated variable value 1!";
document.Variables["Variable2"] = "Updated variable value 2!";
var fields = document.GetChildElements(true, ElementType.Field)
.OfType<Field>()
.Where(f => f.FieldType == FieldType.DocProperty || f.FieldType == FieldType.DocVariable);
// Update DOCPROPERTY and DOCVARIABLE fields.
foreach (var field in fields)
field.Update();
document.Save("UpdatedPropertiesAndVariables.%OutputFileType%");
}
}
Imports GemBox.Document
Imports System.Linq
Module Program
Sub Main()
' If using the Professional version, put your serial key below.
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
Dim document = DocumentModel.Load("%#PropertiesAndVariables.docx%")
' Update built-in and custom document properties.
document.DocumentProperties.BuiltIn(BuiltInDocumentProperty.Title) = "Updated Title"
document.DocumentProperties.Custom("Custom1") = "Updated custom value 1!"
document.DocumentProperties.Custom("Custom2") = "Updated custom value 2!"
' Update document variables.
document.Variables("Variable1") = "Updated variable value 1!"
document.Variables("Variable2") = "Updated variable value 2!"
Dim fields = document.GetChildElements(True, ElementType.Field) _
.OfType(Of Field)() _
.Where(Function(f) f.FieldType = FieldType.DocProperty OrElse f.FieldType = FieldType.DocVariable)
' Update DOCPROPERTY and DOCVARIABLE fields.
For Each field In fields
field.Update()
Next
document.Save("UpdatedPropertiesAndVariables.%OutputFileType%")
End Sub
End Module