Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Header.cs 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Xml.Linq;
  5. using System.IO.Packaging;
  6. using System.Collections.ObjectModel;
  7. namespace Novacode
  8. {
  9. public class Header : Container
  10. {
  11. public bool PageNumbers
  12. {
  13. get
  14. {
  15. return false;
  16. }
  17. set
  18. {
  19. XElement e = XElement.Parse
  20. (@"<w:sdt xmlns:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'>
  21. <w:sdtPr>
  22. <w:id w:val='157571950' />
  23. <w:docPartObj>
  24. <w:docPartGallery w:val='Page Numbers (Top of Page)' />
  25. <w:docPartUnique />
  26. </w:docPartObj>
  27. </w:sdtPr>
  28. <w:sdtContent>
  29. <w:p w:rsidR='008D2BFB' w:rsidRDefault='008D2BFB'>
  30. <w:pPr>
  31. <w:pStyle w:val='Header' />
  32. <w:jc w:val='center' />
  33. </w:pPr>
  34. <w:fldSimple w:instr=' PAGE \* MERGEFORMAT'>
  35. <w:r>
  36. <w:rPr>
  37. <w:noProof />
  38. </w:rPr>
  39. <w:t>1</w:t>
  40. </w:r>
  41. </w:fldSimple>
  42. </w:p>
  43. </w:sdtContent>
  44. </w:sdt>"
  45. );
  46. Xml.AddFirst(e);
  47. PageNumberParagraph = new Paragraph(Document, e.Descendants(XName.Get("p", DocX.w.NamespaceName)).SingleOrDefault(), 0);
  48. }
  49. }
  50. public Paragraph PageNumberParagraph;
  51. internal PackagePart mainPart;
  52. internal Header(DocX document, XElement xml, PackagePart mainPart):base(document, xml)
  53. {
  54. this.mainPart = mainPart;
  55. }
  56. public override Paragraph InsertParagraph()
  57. {
  58. Paragraph p = base.InsertParagraph();
  59. p.PackagePart = mainPart;
  60. return p;
  61. }
  62. public override Paragraph InsertParagraph(int index, string text, bool trackChanges)
  63. {
  64. Paragraph p = base.InsertParagraph(index, text, trackChanges);
  65. p.PackagePart = mainPart;
  66. return p;
  67. }
  68. public override Paragraph InsertParagraph(Paragraph p)
  69. {
  70. p.PackagePart = mainPart;
  71. return base.InsertParagraph(p);
  72. }
  73. public override Paragraph InsertParagraph(int index, Paragraph p)
  74. {
  75. p.PackagePart = mainPart;
  76. return base.InsertParagraph(index, p);
  77. }
  78. public override Paragraph InsertParagraph(int index, string text, bool trackChanges, Formatting formatting)
  79. {
  80. Paragraph p = base.InsertParagraph(index, text, trackChanges, formatting);
  81. p.PackagePart = mainPart;
  82. return p;
  83. }
  84. public override Paragraph InsertParagraph(string text)
  85. {
  86. Paragraph p = base.InsertParagraph(text);
  87. p.PackagePart = mainPart;
  88. return p;
  89. }
  90. public override Paragraph InsertParagraph(string text, bool trackChanges)
  91. {
  92. Paragraph p = base.InsertParagraph(text, trackChanges);
  93. p.PackagePart = mainPart;
  94. return p;
  95. }
  96. public override Paragraph InsertParagraph(string text, bool trackChanges, Formatting formatting)
  97. {
  98. Paragraph p = base.InsertParagraph(text, trackChanges, formatting);
  99. p.PackagePart = mainPart;
  100. return p;
  101. }
  102. public override Paragraph InsertEquation(String equation)
  103. {
  104. Paragraph p = base.InsertEquation(equation);
  105. p.PackagePart = mainPart;
  106. return p;
  107. }
  108. public override ReadOnlyCollection<Paragraph> Paragraphs
  109. {
  110. get
  111. {
  112. ReadOnlyCollection<Paragraph> l = base.Paragraphs;
  113. foreach (var paragraph in l)
  114. {
  115. paragraph.mainPart = mainPart;
  116. }
  117. return l;
  118. }
  119. }
  120. public override List<Table> Tables
  121. {
  122. get
  123. {
  124. List<Table> l = base.Tables;
  125. l.ForEach(x => x.mainPart = mainPart);
  126. return l;
  127. }
  128. }
  129. public List<Image> Images
  130. {
  131. get
  132. {
  133. PackageRelationshipCollection imageRelationships = mainPart.GetRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/image");
  134. if (imageRelationships.Count() > 0)
  135. {
  136. return
  137. (
  138. from i in imageRelationships
  139. select new Image(Document, i)
  140. ).ToList();
  141. }
  142. return new List<Image>();
  143. }
  144. }
  145. public new Table InsertTable(int rowCount, int columnCount)
  146. {
  147. if (rowCount < 1 || columnCount < 1)
  148. throw new ArgumentOutOfRangeException("Row and Column count must be greater than zero.");
  149. Table t = base.InsertTable(rowCount, columnCount);
  150. t.mainPart = mainPart;
  151. return t;
  152. }
  153. public new Table InsertTable(int index, Table t)
  154. {
  155. Table t2 = base.InsertTable(index, t);
  156. t2.mainPart = mainPart;
  157. return t2;
  158. }
  159. public new Table InsertTable(Table t)
  160. {
  161. t = base.InsertTable(t);
  162. t.mainPart = mainPart;
  163. return t;
  164. }
  165. public new Table InsertTable(int index, int rowCount, int columnCount)
  166. {
  167. if (rowCount < 1 || columnCount < 1)
  168. throw new ArgumentOutOfRangeException("Row and Column count must be greater than zero.");
  169. Table t = base.InsertTable(index, rowCount, columnCount);
  170. t.mainPart = mainPart;
  171. return t;
  172. }
  173. }
  174. }