2015-09-23 6 views
6

मैं एक नोड आयातक जो इसनए दस्तावेज़ में बुलेट सूची संख्या कॉपी करें?

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

की तरह चला जाता है मैं इसे उपयोग कर रहा हूँ अन्य एक दस्तावेज़ से childnode कॉपी किया है। मेरा बच्चा नोड एक बुलेट सूची है।

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

लेकिन मेरी समस्या यह है कि ListLabel अर्थात बुलेट सूची की तरह childnode के कुछ गुणों नंबरिंग की नकल की

हो रही नहीं है आपका जवाब के अनुसार, मैं निम्नलिखित की कोशिश की है। लेकिन यह काम नहीं कर रहा है जब मैं प्रत्येक नोड के लिए नया दस्तावेज़ बना रहा हूं।

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"); 
      } 

प्रत्येक उत्पादन दस्तावेज़ नई खाली दस्तावेज़ में स्रोत दस्तावेज़ से सूची आइटम का आयात करता है और सूची लेबल (गिने) मूल्य रखने के रूप में 1.

उत्तर

2

कोड उदाहरण के बाद सूची अनुक्रमणिका है।

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"); 
    } 
} 

समस्या अभी भी बनी हुई है, तो इनपुट और उम्मीद उत्पादन दस्तावेजों के साथ Aspose.Words forum में समस्या की सूचना दें।

मैं डेवलपर प्रचारक के रूप में Aspose के साथ काम करता हूं।

+0

क्या होगा यदि मैं नए दस्तावेज़ में प्रत्येक नोड की प्रतिलिपि बनाने के इच्छुक हूं। उस स्थिति में प्रत्येक दस्तावेज़ की अनुक्रमणिका 1 से शुरू होगी। मुझे सूची सूचकांक का ट्रैक रखने की आवश्यकता है। – TBAG

+0

मैंने अपने प्रश्न को कोड ब्लॉक के साथ अपडेट किया है जिसकी मैंने कोशिश की थी। – TBAG

+0

ध्यान दें कि Aspose.Words एमएस वर्ड के समान व्यवहार की नकल करता है। यदि आप Word दस्तावेज़ से एक सूची आइटम कॉपी करते हैं और इसे नए खाली दस्तावेज़ में पेस्ट करते हैं, तो आपको एक ही आउटपुट मिल जाएगा। सूची आइटम 1 से शुरू होता है। इस समस्या को हल करने के लिए, आप मेरे उत्तर में अद्यतन कोड उदाहरण का उपयोग कर सकते हैं। उम्मीद है कि यह आपकी मदद करता है। –

संबंधित मुद्दे