BookmarkBookmarkEnd Property

Gets the node that represents the end of the bookmark.

Namespace:  Aspose.Words
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
Syntax
public BookmarkEnd BookmarkEnd { get; }

Property Value

Type: BookmarkEnd
Examples
Shows how to add bookmarks and update their contents.
public void CreateUpdateAndPrintBookmarks()
{
    // Create a document with 3 bookmarks: "MyBookmark 1", "MyBookmark 2", "MyBookmark 3"
    Document doc = CreateDocumentWithBookmarks();
    BookmarkCollection bookmarks = doc.Range.Bookmarks;

    // Check that we have 3 bookmarks
    Assert.AreEqual(3, bookmarks.Count);

    // Look at initial values of our bookmarks
    PrintAllBookmarkInfo(bookmarks);

    // Obtain bookmarks from a bookmark collection by index/name and update their values
    bookmarks[0].Name = "Updated name of " + bookmarks[0].Name;
    bookmarks["MyBookmark 2"].Text = "Updated text content of " + bookmarks[1].Name;
    // Remove the latest bookmark
    // The bookmarked text is not deleted
    bookmarks[2].Remove();

    bookmarks = doc.Range.Bookmarks;
    // Check that we have 2 bookmarks after the latest bookmark was deleted
    Assert.AreEqual(2, bookmarks.Count);

    // Look at updated values of our bookmarks
    PrintAllBookmarkInfo(bookmarks);
}

/// <summary>
/// Create a document with bookmarks using the start and end nodes.
/// </summary>
private static Document CreateDocumentWithBookmarks()
{
    DocumentBuilder builder = new DocumentBuilder();
    Document doc = builder.Document;

    // An empty document has just one empty paragraph by default
    Paragraph p = doc.FirstSection.Body.FirstParagraph;

    // Add several bookmarks to the document
    for (int i = 1; i <= 3; i++)
    {
        string bookmarkName = "MyBookmark " + i;

        p.AppendChild(new Run(doc, "Text before bookmark."));

        p.AppendChild(new BookmarkStart(doc, bookmarkName));
        p.AppendChild(new Run(doc, "Text content of " + bookmarkName));
        p.AppendChild(new BookmarkEnd(doc, bookmarkName));

        p.AppendChild(new Run(doc, "Text after bookmark.\r\n"));
    }

    return builder.Document;
}

/// <summary>
/// Use an iterator and a visitor to print info of every bookmark from within a document.
/// </summary>
private static void PrintAllBookmarkInfo(BookmarkCollection bookmarks)
{
    // Create a DocumentVisitor
    BookmarkInfoPrinter bookmarkVisitor = new BookmarkInfoPrinter();

    // Get the enumerator from the document's BookmarkCollection and iterate over the bookmarks
    using (IEnumerator<Bookmark> enumerator = bookmarks.GetEnumerator())
    {
        while (enumerator.MoveNext())
        {
            Bookmark currentBookmark = enumerator.Current;

            // Accept our DocumentVisitor it to print information about our bookmarks
            if (currentBookmark != null)
            {
                currentBookmark.BookmarkStart.Accept(bookmarkVisitor);
                currentBookmark.BookmarkEnd.Accept(bookmarkVisitor);

                // Prints a blank line
                Console.WriteLine(currentBookmark.BookmarkStart.GetText());
            }
        }
    }
}

/// <summary>
/// Visitor that prints bookmark information to the console.
/// </summary>
public class BookmarkInfoPrinter : DocumentVisitor
{
    public override VisitorAction VisitBookmarkStart(BookmarkStart bookmarkStart)
    {
        Console.WriteLine("BookmarkStart name: \"{0}\", Content: \"{1}\"", bookmarkStart.Name,
            bookmarkStart.Bookmark.Text);
        return VisitorAction.Continue;
    }

    public override VisitorAction VisitBookmarkEnd(BookmarkEnd bookmarkEnd)
    {
        Console.WriteLine("BookmarkEnd name: \"{0}\"", bookmarkEnd.Name);
        return VisitorAction.Continue;
    }
}
See Also