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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /*************************************************************************************
  2. DocX – DocX is the community edition of Xceed Words for .NET
  3. Copyright (C) 2009-2016 Xceed Software Inc.
  4. This program is provided to you under the terms of the Microsoft Public
  5. License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
  6. For more features and fast professional support,
  7. pick up Xceed Words for .NET at https://xceed.com/xceed-words-for-net/
  8. ***********************************************************************************/
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Xml.Linq;
  13. using System.IO.Packaging;
  14. using System.Collections.ObjectModel;
  15. namespace Xceed.Words.NET
  16. {
  17. public class Footer : Container, IParagraphContainer
  18. {
  19. #region Public Properties
  20. public bool PageNumbers
  21. {
  22. get
  23. {
  24. return false;
  25. }
  26. set
  27. {
  28. XElement e = XElement.Parse
  29. ( @"<w:sdt xmlns:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'>
  30. <w:sdtPr>
  31. <w:id w:val='157571950' />
  32. <w:docPartObj>
  33. <w:docPartGallery w:val='Page Numbers (Top of Page)' />
  34. <w:docPartUnique />
  35. </w:docPartObj>
  36. </w:sdtPr>
  37. <w:sdtContent>
  38. <w:p w:rsidR='008D2BFB' w:rsidRDefault='008D2BFB'>
  39. <w:pPr>
  40. <w:pStyle w:val='Header' />
  41. <w:jc w:val='center' />
  42. </w:pPr>
  43. <w:fldSimple w:instr=' PAGE \* MERGEFORMAT'>
  44. <w:r>
  45. <w:rPr>
  46. <w:noProof />
  47. </w:rPr>
  48. <w:t>1</w:t>
  49. </w:r>
  50. </w:fldSimple>
  51. </w:p>
  52. </w:sdtContent>
  53. </w:sdt>"
  54. );
  55. Xml.AddFirst( e );
  56. }
  57. }
  58. public override ReadOnlyCollection<Paragraph> Paragraphs
  59. {
  60. get
  61. {
  62. var paragraphs = base.Paragraphs;
  63. foreach( var paragraph in paragraphs )
  64. {
  65. paragraph.PackagePart = this.PackagePart;
  66. }
  67. return paragraphs;
  68. }
  69. }
  70. public override List<Table> Tables
  71. {
  72. get
  73. {
  74. var l = base.Tables;
  75. l.ForEach( x => x.PackagePart = this.PackagePart );
  76. return l;
  77. }
  78. }
  79. public List<Image> Images
  80. {
  81. get
  82. {
  83. var imageRelationships = this.PackagePart.GetRelationshipsByType( DocX.RelationshipImage );
  84. if( imageRelationships.Count() > 0 )
  85. {
  86. return
  87. (
  88. from i in imageRelationships
  89. select new Image( Document, i )
  90. ).ToList();
  91. }
  92. return new List<Image>();
  93. }
  94. }
  95. #endregion
  96. #region Constructors
  97. internal Footer( DocX document, XElement xml, PackagePart mainPart ) : base( document, xml )
  98. {
  99. this.PackagePart = mainPart;
  100. }
  101. #endregion
  102. #region Public Methods
  103. public override Paragraph InsertParagraph()
  104. {
  105. var p = base.InsertParagraph();
  106. p.PackagePart = this.PackagePart;
  107. return p;
  108. }
  109. public override Paragraph InsertParagraph( int index, string text, bool trackChanges )
  110. {
  111. var p = base.InsertParagraph( index, text, trackChanges );
  112. p.PackagePart = this.PackagePart;
  113. return p;
  114. }
  115. public override Paragraph InsertParagraph( Paragraph p )
  116. {
  117. p.PackagePart = this.PackagePart;
  118. return base.InsertParagraph( p );
  119. }
  120. public override Paragraph InsertParagraph( int index, Paragraph p )
  121. {
  122. p.PackagePart = this.PackagePart;
  123. return base.InsertParagraph( index, p );
  124. }
  125. public override Paragraph InsertParagraph( int index, string text, bool trackChanges, Formatting formatting )
  126. {
  127. var p = base.InsertParagraph( index, text, trackChanges, formatting );
  128. p.PackagePart = this.PackagePart;
  129. return p;
  130. }
  131. public override Paragraph InsertParagraph( string text )
  132. {
  133. var p = base.InsertParagraph( text );
  134. p.PackagePart = this.PackagePart;
  135. return p;
  136. }
  137. public override Paragraph InsertParagraph( string text, bool trackChanges )
  138. {
  139. var p = base.InsertParagraph( text, trackChanges );
  140. p.PackagePart = this.PackagePart;
  141. return p;
  142. }
  143. public override Paragraph InsertParagraph( string text, bool trackChanges, Formatting formatting )
  144. {
  145. var p = base.InsertParagraph( text, trackChanges, formatting );
  146. p.PackagePart = this.PackagePart;
  147. return p;
  148. }
  149. public override Paragraph InsertEquation( String equation )
  150. {
  151. var p = base.InsertEquation( equation );
  152. p.PackagePart = this.PackagePart;
  153. return p;
  154. }
  155. public override Table InsertTable( int rowCount, int columnCount )
  156. {
  157. var table = base.InsertTable( rowCount, columnCount );
  158. return this.SetMainPart( table );
  159. }
  160. public override Table InsertTable( int index, Table t )
  161. {
  162. var table = base.InsertTable( index, t );
  163. return this.SetMainPart( table );
  164. }
  165. public override Table InsertTable( Table t )
  166. {
  167. var table = base.InsertTable( t );
  168. return this.SetMainPart( table );
  169. }
  170. public override Table InsertTable( int index, int rowCount, int columnCount )
  171. {
  172. var table = base.InsertTable( index, rowCount, columnCount );
  173. return this.SetMainPart( table );
  174. }
  175. #endregion
  176. #region Private Methods
  177. private Table SetMainPart( Table table )
  178. {
  179. if( table != null )
  180. {
  181. table.PackagePart = this.PackagePart;
  182. }
  183. return table;
  184. }
  185. #endregion
  186. }
  187. }