We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

How to continue bullet numbering on inserted bullet items

  • My ‘main’ document has 5 bullet items, numbered 1 through 5
    * The 4th bullet item has a bookmark.
    * My ‘sub’ document has 2 bullets

    When I insert my ‘sub’ document into the ‘main’ doc (using the InsertDocumentAtNode method listed in Documentation), this is what I end up getting…

    1. main item
    2. main item
    3. main item
    4. main item

    1. sub item —
    2. sub item —
    5. main item

    I can fix this in Word, by right clicking on “1. sub item —” and requesting to continue numbering.

    What I would have liked is the numbering to continue without this manual step. Any suggestions?

    Thank you,


Hi<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Thanks for your request. I modified InserDocument method. Please try using the following code:

private void InsertDocument(Node insertAfterNode, Document srcDoc)


// Make sure that the node is either a pargraph or table.

if ((!insertAfterNode.NodeType.Equals(NodeType.Paragraph)) &


throw new ArgumentException("The destination node should be either a paragraph or table.");

Document dstDoc = insertAfterNode.Document;

// We will be inserting into the parent of the destination paragraph.

CompositeNode dstStory = insertAfterNode.ParentNode;

//Declare temporary list

List tmpList = null;

if (insertAfterNode.NodeType == NodeType.Paragraph)


if (((Paragraph)insertAfterNode).IsListItem)


tmpList = ((Paragraph)insertAfterNode).ListFormat.List;



//Create one more temporary list

//that is needed to detect whether new list is started in the source document

List srcList = null;

// Loop through all sections in the source document.

foreach (Section srcSection in srcDoc.Sections)


// Loop through all block level nodes (paragraphs and tables) in the body of the section.

foreach (Node srcNode in srcSection.Body)


Paragraph para = srcNode as Paragraph;

// This creates a clone of the node, suitable for insertion into the destination document.

Node newNode = dstDoc.ImportNode(srcNode, true);

// Check, if paragraph is ListItem and numbering should be started at 1

if ((para != null) && para.ParagraphFormat.IsListItem)


bool isNewList = false;

if (!para.ListFormat.List.Equals(srcList))


if (srcList != null)

isNewList = true;

srcList = para.ListFormat.List;


if (tmpList == null || isNewList)


tmpList = (newNode as Paragraph).ListFormat.List;


//Set list

((Paragraph)newNode).ListFormat.List = tmpList;


// Insert new node after the reference node.

dstStory.InsertAfter(newNode, insertAfterNode);

insertAfterNode = newNode;




Hope this helps.

Best regards.