Comments

GemBox.Document supports comments in the DOCX file format. You can add a new comment to a range of text by adding CommentStart and CommentEnd elements to document inlines, reply to a comment or mark a comment as resolved.

The following example shows how you can add comments to a document.

Word document with comments
Screenshot of Word file with comments
using System;
using GemBox.Document;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = new DocumentModel();

        // Add the first section.
        var section1 = new Section(document);
        document.Sections.Add(section1);

        // Create the first paragraph.
        var paragraph1 = new Paragraph(document,
            new Run(document, "This is "),
            new Run(document, "the first"),
            new Run(document, " paragraph in the document"));
        section1.Blocks.Add(paragraph1);

        // Create the comment and mark it as resolved.
        var comment1 = new Comment(document);
        comment1.Author = "John Doe";
        comment1.Initials = "JD";
        comment1.Date = DateTime.Now;
        comment1.Resolved = true;
        comment1.Blocks.Add(new Paragraph(document, "This is the first comment"));

        // Add the comment to the paragraph.
        paragraph1.Inlines.Insert(1, new CommentStart(document, comment1));
        paragraph1.Inlines.Insert(3, new CommentEnd(document, comment1));

        // Create additional paragraphs.
        var paragraph2 = new Paragraph(document, "This is the second paragraph");
        section1.Blocks.Add(paragraph2);
        var paragraph3 = new Paragraph(document, "This is the last paragraph");
        section1.Blocks.Add(paragraph3);

        // Create a second comment.
        var comment2 = new Comment(document);
        comment2.Author = "John Doe";
        comment2.Initials = "JD";
        comment2.Blocks.Add(new Paragraph(document, "This comment is a response to two paragraphs"));

        // Add the comment to two paragraphs.
        paragraph2.Inlines.Insert(0, new CommentStart(document, comment2));
        paragraph3.Inlines.Add(new CommentEnd(document, comment2));

        // Create another comment as a response to the previous one.
        var comment3 = new Comment(document);
        comment3.Author = "Jane Doe";
        comment3.Initials = "JD";
        comment3.ReplyTo = comment2;
        comment3.Blocks.Add(new Paragraph(document, "This is a response to the previous comment."));

        paragraph2.Inlines.Insert(1, new CommentStart(document, comment3));
        paragraph3.Inlines.Add(new CommentEnd(document, comment3));

        document.Save("Comments.docx");
    }
}
Imports GemBox.Document

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim document = new DocumentModel()

        ' Add the first section.
        Dim section1 = new Section(document)
        document.Sections.Add(section1)

        ' Create the first paragraph.
        Dim paragraph1 = new Paragraph(document,
            new Run(document, "This is "),
            new Run(document, "the first"),
            new Run(document, " paragraph in the document"))
        section1.Blocks.Add(paragraph1)

        ' Create the comment and mark it as resolved.
        Dim comment1 = new Comment(document)
        comment1.Author = "John Doe"
        comment1.Initials = "JD"
        comment1.Date = DateTime.Now
        comment1.Resolved = true
        comment1.Blocks.Add(new Paragraph(document, "This is the first comment"))

        ' Add the comment to the paragraph.
        paragraph1.Inlines.Insert(1, new CommentStart(document, comment1))
        paragraph1.Inlines.Insert(3, new CommentEnd(document, comment1))

        ' Create additional paragraphs.
        Dim paragraph2 = new Paragraph(document, "This is the second paragraph")
        section1.Blocks.Add(paragraph2)
        Dim paragraph3 = new Paragraph(document, "This is the last paragraph")
        section1.Blocks.Add(paragraph3)

        ' Create a second comment.
        Dim comment2 = new Comment(document)
        comment2.Author = "John Doe"
        comment2.Initials = "JD"
        comment2.Blocks.Add(new Paragraph(document, "This comment is a response to two paragraphs"))

        ' Add the comment to two paragraphs.
        paragraph2.Inlines.Insert(0, new CommentStart(document, comment2))
        paragraph3.Inlines.Add(new CommentEnd(document, comment2))

        ' Create another comment as a response to the previous one.
        Dim comment3 = new Comment(document)
        comment3.Author = "Jane Doe"
        comment3.Initials = "JD"
        comment3.ReplyTo = comment2
        comment3.Blocks.Add(new Paragraph(document, "This is a response to the previous comment."))

        paragraph2.Inlines.Insert(1, new CommentStart(document, comment3))
        paragraph3.Inlines.Add(new CommentEnd(document, comment3))

        document.Save("Comments.docx")

    End Sub
End Module

Want more?

Next example GitHub

Check the next example or select an example from the menu. You can also download our examples from the GitHub.


Like it?

Download Buy

If you want to try the GemBox.Document yourself, you can download the free version. It delivers the same performance and set of features as the professional version, but with some operations limited. To remove the limitation, you need to purchase a license.