2017-10-31 6 views
5

मुझे क्या चाहिए: मैं WordprocessingDocument संपादित कर रहा हूं, और इसमें कुछ ट्रैक किए गए परिवर्तन जोड़ रहा हूं। यह हिस्सा किया गया है। अब, मैं चाहता हूं कि एमएस शब्द डिफ़ॉल्ट रूप से सभी संशोधनों को दिखाएं, यानी, दस्तावेज़ में ट्रैक किए गए परिवर्तनों को खोलने के लिए उपयोगकर्ता को लाल साइड बार पर क्लिक करने की आवश्यकता नहीं है।डिफ़ॉल्ट रूप से वर्ड क्लाइंट में फलक की समीक्षा

red side bar

मैं क्या किया: इस के लिए, मैं एक वर्ग RevisionView, जो w:settings तत्व के तहत settings.xml में XML तत्व <w:revisionView /> कहते हैं पाया। RevisionView में कुछ गुण हैं जैसे Comments, DisplayRevision, Formatting आदि। मैं स्पष्ट रूप से उन्हें true पर सेट करता हूं।

RevisionView revView = new RevisionView(); 
revView.DisplayRevision = new OnOffValue(true); 
revView.Formatting = new OnOffValue(true); 
revView.InkAnnotations = new OnOffValue(true); 
revView.Markup = new OnOffValue(true); 
revView.Comments = new OnOffValue(true); 

और फिर मैं Settings को यह revView कहा:

Settings settings = wordprocessingDocument.MainDocumentPart.DocumentSettingsPart.Settings; 
settings.RemoveAllChildren<RevisionView>(); 
settings.AppendChild(revView); 
settings.Save(); 

और फिर मैं दस्तावेज़ एक्सएमएल स्पष्ट रूप से समीक्षा की जाती है, यह settings में निम्नलिखित एक्सएमएल जोड़ रहा है:

<w:revisionView w:markup="true" w:comments="true" w:insDel="true" w:formatting="true" w:inkAnnotations="true" /> 

लेकिन सेटिंग में यह तत्व जोड़ना दृश्य को प्रभावित नहीं करता है। यह डिफ़ॉल्ट रूप से खोले गए संशोधन नहीं दिखा रहा है।

फिर, परीक्षण के लिए, मैं zoom तत्व settings.xml में हाथ से <w:zoom w:percent="100" /> से <w:zoom w:percent="120" /> को बदल दिया है। मुझे क्या उम्मीद थी: शब्द इस दस्तावेज़ के लिए ज़ूम को 100 से 120 से बदल देगा। लेकिन ऐसा नहीं हुआ, settings.xml में 120 में बदलने के बाद भी ज़ूम 100 था।

एक और बात: मैं इंटरऑप का उपयोग नहीं कर सकता क्योंकि मुझे इसे सर्वर पर तैनात करना है, इसलिए मैं OpenXmlSdk का उपयोग करके यह सब कर रहा हूं।

मैं क्या पूछ रहा हूँ:

  • तो यह और भी करने के लिए मैं क्या चाहते हैं संभव है?

  • यदि यह है, तो मैं गलत क्या कर रहा हूं? RevisionView विकल्प है, मुझे किस पर भरोसा करना चाहिए?

  • क्या settings.xml में प्रदान की गई सेटिंग्स को लागू करने के लिए शब्द को लागू करने के लिए बल देने का कोई तरीका है (डिफ़ॉल्ट अनुप्रयोग स्तर सेटिंग्स को ओवरराइड करें)?

  • ज़ूम को 100 से 120 तक क्यों नहीं बदल रहा है?

उत्तर

1

यहाँ अपने प्रश्नों के उत्तर दिए गए हैं:

यह मैं क्या चाहते करने के लिए भी संभव है?

आप जो करने का प्रयास कर रहे हैं वह है: डॉक्क्स फ़ाइल खोलने पर, समीक्षा फलक स्वचालित रूप से खुल जाए। मुझे WordX को OpenXml के साथ ऐसा करने के लिए मजबूर करने का कोई तरीका नहीं मिला।

यदि यह है, तो मैं गलत क्या कर रहा हूं? क्या संशोधन विकल्प है, मुझे किस पर भरोसा करना चाहिए?

यह संभव नहीं है, इसलिए यहां जवाब भी नहीं है।

क्या सेटिंग्स लागू करने के लिए शब्द को लागू करने का कोई तरीका है (डिफ़ॉल्ट अनुप्रयोग स्तर सेटिंग्स को ओवरराइड करें) सेटिंग्स.xml में प्रदान की गई सेटिंग्स?

हाँ OpenXml SDK का उपयोग कर। Settings भाग में गुण हैं जिन्हें आप डिफ़ॉल्ट वर्ड क्लाइंट व्यवहार को बदलने के लिए कोड के साथ नियंत्रित कर सकते हैं।

ज़ूम को 100 से 120 तक क्यों नहीं बदल रहा है?

मैं आपकी फ़ाइल को देखे बिना इसका उत्तर नहीं दे सकता। जब आपने मैन्युअल रूप से फ़ाइल संपादित की है तो आपने फ़ाइल को सही तरीके से वापस नहीं सहेजा था।

मैं निम्नलिखित कोड के साथ एक सरल कंसोल ऐप बनाने में सक्षम था। ऐप किसी भी वर्ड फ़ाइल के लिए ज़ूम स्तर को 120% तक बदल देगा। आपको कोड में अपना फ़ाइल पथ जोड़ना होगा।

मैंने OpenXml Productivity Tool. का उपयोग करके इस कोड का अधिकांश हिस्सा उत्पन्न किया।

नोट - विजुअल स्टूडियो में इसे बनाते समय, DocumentFormat.OpenXml और WindowsBase को अपने प्रोजेक्ट संदर्भों में जोड़ने के लिए मत भूलना।

using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Wordprocessing; 

namespace ConsoleApp4 
{ 
    class Program 
    { 

     private static WordprocessingDocument document; 
     private static System.Collections.Generic.IDictionary<System.String, OpenXmlPart> UriPartDictionary = new System.Collections.Generic.Dictionary<System.String, OpenXmlPart>(); 
     private static System.Collections.Generic.IDictionary<System.String, DataPart> UriNewDataPartDictionary = new System.Collections.Generic.Dictionary<System.String, DataPart>(); 


     static void Main(string[] args) 
     { 

      using (document = WordprocessingDocument.Open("<DOCX FILE PATH HERE>", true)) 
      { 
       BuildUriPartDictionary(); 
       ChangeParts(); 
      } 

     } 

     private static void BuildUriPartDictionary() 
     { 
      System.Collections.Generic.Queue<OpenXmlPartContainer> queue = new System.Collections.Generic.Queue<OpenXmlPartContainer>(); 
      queue.Enqueue(document); 
      while (queue.Count > 0) 
      { 
       foreach (var part in queue.Dequeue().Parts) 
       { 
        if (!UriPartDictionary.Keys.Contains(part.OpenXmlPart.Uri.ToString())) 
        { 
         UriPartDictionary.Add(part.OpenXmlPart.Uri.ToString(), part.OpenXmlPart); 
         queue.Enqueue(part.OpenXmlPart); 
        } 
       } 
      } 
     } 

     private static void ChangeParts() 
     { 
      ChangeDocumentSettingsPart1(((DocumentSettingsPart)UriPartDictionary["/word/settings.xml"])); 
     } 

     private static void ChangeDocumentSettingsPart1(DocumentSettingsPart documentSettingsPart) 
     { 
      Settings settings1 = documentSettingsPart.Settings; 

      Zoom zoom1 = settings1.GetFirstChild<Zoom>(); 

      zoom1.Percent = "120"; 

     } 
    } 
} 
+0

मैं किसी भी कोड का उपयोग कर ज़ूम स्तर को नहीं बदल रहा था। मैं मैन्युअल रूप से docx फ़ाइल का एक्सएमएल संपादित कर रहा था। और यह सही ढंग से सहेजा गया, मैंने इसे दोबारा जांच लिया। मुझे यह कोड देखने के लिए भी कोशिश करें कि यह अब ज़ूम स्तर को बदलता है या नहीं। –

+0

आपका कोड सिर्फ ज़ूम प्रतिशत को '120%' में बदल रहा है, मैंने बदले गए एक्सएमएल फाइलों को भी देखा है, यह 'settings.xml' में बदलकर' 120% 'हो गया है, लेकिन शब्द अभी भी इसे '100%' ज़ूम। –

+0

और एक और बात, यदि 'RevisionView' ऐसा नहीं करता जो मैं उससे अपेक्षा कर रहा था, तो वास्तव में यह क्या करता है? –

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