Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

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