Copy bullet list number to new document?

I have a node importer that looks like this

Dim nodeImporter As New Aspose.Words.NodeImporter(_wordDocument, documentComponentDocument, Aspose.Words.ImportFormatMode.UseDestinationStyles) 

I use it to copy a childnode from one document to another. My child node is a list of tokens.

 documentComponentSection.Body.AppendChild(nodeImporter.ImportNode(childNode, True)) 

But my problem is that some properties of the child, such as ListLabel ie numbering is not copied

According to your answer, I tried to follow. But it does not work when I create a new document for each node.

 Aspose.Words.Document srcDoc = new Aspose.Words.Document(Mydir + "input.docx"); Aspose.Words.Document dstDoc = new Aspose.Words.Document(); var ctr = 0; int listid = 0; Aspose.Words.Lists.List dstList = null; foreach (Aspose.Words.Paragraph paragraph in srcDoc.GetChildNodes(Aspose.Words.NodeType.Paragraph, true)) { Aspose.Words.NodeImporter imp = new Aspose.Words.NodeImporter(srcDoc, dstDoc, Aspose.Words.ImportFormatMode.KeepSourceFormatting); Aspose.Words.Node impNode = imp.ImportNode(paragraph, true); if (((Aspose.Words.Paragraph)impNode).IsListItem) { ((Aspose.Words.Paragraph)impNode).ListFormat.ListLevel.StartAt = paragraph.ListFormat.List.ListId; if (listid != paragraph.ListFormat.List.ListId) { listid = paragraph.ListFormat.List.ListId; dstList = dstDoc.Lists.AddCopy(paragraph.ListFormat.List); } ((Aspose.Words.Paragraph)impNode).ListFormat.List = dstList; } dstDoc.FirstSection.Body.RemoveAllChildren(); dstDoc.FirstSection.Body.AppendChild(impNode); var index = ctr++; dstDoc.Save(MyDir + index.ToString() + ".docx"); } 

Each output contains a list index of 1.

+6
source share
1 answer

The following code example imports a list item from the source document into a new blank document and stores the label value in the list (numbered).

 Aspose.Words.Document srcDoc = new Aspose.Words.Document(MyDir + "input.docx"); DocumentBuilder builder = new DocumentBuilder(srcDoc); srcDoc.UpdateListLabels(); Aspose.Words.Document dstDoc = new Aspose.Words.Document(); int ctr = 0; Aspose.Words.NodeImporter imp = new Aspose.Words.NodeImporter(srcDoc, dstDoc, Aspose.Words.ImportFormatMode.KeepSourceFormatting); foreach (Aspose.Words.Paragraph paragraph in srcDoc.GetChildNodes(Aspose.Words.NodeType.Paragraph, true)) { if (paragraph.IsListItem) { ListLabel label = paragraph.ListLabel; builder.MoveTo(paragraph); builder.StartBookmark("bookmark_" + label.LabelValue); builder.EndBookmark("bookmark_" + label.LabelValue); Aspose.Words.Node impNode = imp.ImportNode(paragraph, true); dstDoc.FirstSection.Body.RemoveAllChildren(); dstDoc.FirstSection.Body.AppendChild(impNode); foreach (Bookmark bookmark in ((Aspose.Words.Paragraph)impNode).Range.Bookmarks) { if (!bookmark.Name.StartsWith("bookmark_")) continue; String listLabel = bookmark.Name.Replace("bookmark_", ""); try { ((Aspose.Words.Paragraph)impNode).ListFormat.ListLevel.StartAt = Convert.ToInt32(listLabel); break; } catch (Exception ex) { } } ctr++; dstDoc.Range.Bookmarks.Clear(); dstDoc.Save(MyDir + ctr.ToString() + ".docx"); } } 

If the problem still persists, report it to the Aspose.Words forum with the source and expected output.

I work with Aspose as a developer evangelist.

+2
source

All Articles