Bonjour,

voila, j'ai un ficher docx dans un stream et je voudrais indenter tous le texte de ce docx. je sais que je dois mettre la balise pPr dans la balise p et dans celle-ci ajouter une autre balise ind avec un attribut left="1701".

voila le code que j'ai mais le problème est que je reçois le message d'erreur suivant :
Memory stream is not expandable
au moment où je sauve.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
using (WordprocessingDocument mainDoc = WordprocessingDocument.Open(stream, true))
            {
 
 
                XmlDocument dom = new XmlDocument();
                dom.Load(mainDoc.MainDocumentPart.GetStream());
                XmlNodeList xnlParagraphes = dom.GetElementsByTagName("w:p");
 
 
 
                for (int i = 0; i < xnlParagraphes.Count; i++)
                {
                    XmlNode xn = xnlParagraphes[i];
                    XmlNode xnBase = dom.CreateNode(XmlNodeType.Element, "w", "pPr", w.NamespaceName);
                    XmlNode xnIndent = dom.CreateNode(XmlNodeType.Element, "w", "ind", w.NamespaceName);
                    XmlAttribute xa = dom.CreateAttribute("w","left",w.NamespaceName);
                    xa.InnerXml = "1701";
 
                    xnIndent.Attributes.Append(xa);
                    xnBase.AppendChild(xnIndent);
                    xn.AppendChild(xnBase);
                }
 
                using (Stream str = mainDoc.MainDocumentPart.GetStream(FileMode.Create, FileAccess.Write))
                {
                    using (XmlWriter xw = XmlWriter.Create(str))
 
                        dom.Save(xw);
                }
}

si quelqu'un à déjà eu ce problème et qu'il a réalisé cette manip d'une autre manière je suis preneur.

Merci d'avance pour l'aide que l'on pourra me donner