Articles in this section

How to Identify Bookmark Placement in Word Document in .NET Core?

Syncfusion® Essential® DocIO is a .NET Word library used to create, read, edit, and convert Word documents programmatically without Microsoft Word or interop dependencies. Using this library, you can identify bookmark placement in Word document header, footer, or text body using C#.

Overview of the Find Bookmark Placement in Word Document Logic:

  • Open the input Word document.
  • Iterate through the bookmark collection and retrieve the bookmark start owner paragraph of each bookmark.
  • Traverse the paragraph’s owner hierarchy until reaching the Section, stopping if a HeaderFooter is found.
  • Determine whether the bookmark resides in the text body, header, or footer.
  • Print the bookmark name along with its owner type.

Steps to identify bookmark placement in Word document header, footer, or text body:

  1. Create a new .NET Core console application project.
    Create console application in Visual Studio
  2. Install the Syncfusion.DocIO.Net.Core NuGet package as a reference to your project from NuGet.org.
    Add DocIO NuGet package reference to the project
Note:

Starting with v16.2.0.x, if you reference Syncfusion® assemblies from a trial setup or from the NuGet feed, include a license key in your projects. Refer to the link to learn about generating and registering a Syncfusion® license key in your application to use the components without a trial message.

  1. Include the following namespaces in the Program.cs file.
    C#
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIO;
  1. Use the following code example to identify bookmark placement in Word document header, footer, or text body.
    C#
// Load the existing Word document
WordDocument document = new WordDocument(Path.GetFullPath("Data/Template.docx"));
// Iterate through all bookmarks in the document.
foreach (Bookmark bookmark in document.Bookmarks)
{
    // Get bookmark start from the current bookmark
    BookmarkStart bkmkStart = bookmark.BookmarkStart;
    if (bkmkStart != null)
    {
        // Get the paragraphs that contain the bookmark's start.
        Entity ownerEntity = bkmkStart.OwnerParagraph;
        // Traverse the owner hierarchy until reaching the section, stopping if a HeaderFooter is found
        while (!(ownerEntity is WSection))
        {
            if (ownerEntity.EntityType == EntityType.HeaderFooter)
                break;
            ownerEntity = ownerEntity.Owner;
        }
        // Check if the bookmark is in the text body, header, or footer
        string ownerLabel = (ownerEntity.EntityType == EntityType.Section)
            ? "TextBody"
            : CheckHeaderFooterType(ownerEntity.Owner as WSection, ownerEntity as HeaderFooter);
        // Print the bookmark name and its owner type
        Console.WriteLine("Bookmark Name:" + bkmkStart.Name + "\n  Bookmark Owner:" + ownerLabel);                    
    }
}
Console.ReadLine();
  1. Use the following code example to check if a bookmark is located in a Header or Footer.
    C#
 private static string CheckHeaderFooterType(WSection section, HeaderFooter headerFooter)
{
    string type = "Header and Footer";
    // Check if the given HeaderFooter instance is one of the section's header references.
    if (section.HeadersFooters.OddHeader == headerFooter
        || section.HeadersFooters.FirstPageHeader == headerFooter || section.HeadersFooters.EvenHeader == headerFooter)
    {
        type = "Header";
    }
    // Otherwise, check if it is one of the section's footer references.
    else if (section.HeadersFooters.OddFooter == headerFooter || section.HeadersFooters.EvenFooter == headerFooter
        || section.HeadersFooters.FirstPageFooter == headerFooter)
    {
        type = "Footer";
    }
    return type;
}

You can download a complete working sample to identify bookmark placement in Word document header, footer, or text body from GitHub.

Input Document:

Input Document.png

Output Window:

Output Window

Take a moment to peruse the documentation where you can find basic Word document processing options along with features like mail merge, merge, split, and compare Word documents, find and replace text in the Word document, protect the Word documents, and most importantly, the PDF and Image conversions with code examples.

Conclusion

I hope you enjoyed learning about how to identify bookmark placement in Word document header, footer, or text body in a .NET Core Word document.

You can refer to our ASP.NET Core DocIO feature tour page to know about its other groundbreaking feature representations and documentation, and how to quickly get started with configuration specifications. You can also explore our ASP.NET Core DocIO example to understand how to create and manipulate data.

For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion®, you can try our 30-day free trial to check out our other controls.

If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forums, Direct-Trac, or feedback portal. We are always happy to assist you!

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Access denied
Access denied