Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Header.cs 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  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 Header : Container, IParagraphContainer
  18. {
  19. #region Public Properties
  20. public Paragraph PageNumberParagraph
  21. {
  22. get;
  23. set;
  24. }
  25. public bool PageNumbers
  26. {
  27. get
  28. {
  29. return false;
  30. }
  31. set
  32. {
  33. XElement e = XElement.Parse
  34. ( @"<w:sdt xmlns:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'>
  35. <w:sdtPr>
  36. <w:id w:val='157571950' />
  37. <w:docPartObj>
  38. <w:docPartGallery w:val='Page Numbers (Top of Page)' />
  39. <w:docPartUnique />
  40. </w:docPartObj>
  41. </w:sdtPr>
  42. <w:sdtContent>
  43. <w:p w:rsidR='008D2BFB' w:rsidRDefault='008D2BFB'>
  44. <w:pPr>
  45. <w:pStyle w:val='Header' />
  46. <w:jc w:val='center' />
  47. </w:pPr>
  48. <w:fldSimple w:instr=' PAGE \* MERGEFORMAT'>
  49. <w:r>
  50. <w:rPr>
  51. <w:noProof />
  52. </w:rPr>
  53. <w:t>1</w:t>
  54. </w:r>
  55. </w:fldSimple>
  56. </w:p>
  57. </w:sdtContent>
  58. </w:sdt>"
  59. );
  60. Xml.AddFirst( e );
  61. this.PageNumberParagraph = new Paragraph( this.Document, e.Descendants( XName.Get( "p", DocX.w.NamespaceName ) ).SingleOrDefault(), 0 );
  62. }
  63. }
  64. public override ReadOnlyCollection<Paragraph> Paragraphs
  65. {
  66. get
  67. {
  68. var paragraphs = base.Paragraphs;
  69. foreach( var paragraph in paragraphs )
  70. {
  71. paragraph.PackagePart = this.PackagePart;
  72. }
  73. return paragraphs;
  74. }
  75. }
  76. public override List<Table> Tables
  77. {
  78. get
  79. {
  80. var l = base.Tables;
  81. l.ForEach( x => x.PackagePart = this.PackagePart );
  82. return l;
  83. }
  84. }
  85. public List<Image> Images
  86. {
  87. get
  88. {
  89. var imageRelationships = this.PackagePart.GetRelationshipsByType( DocX.RelationshipImage );
  90. if( imageRelationships.Count() > 0 )
  91. {
  92. return
  93. (
  94. from i in imageRelationships
  95. select new Image( Document, i )
  96. ).ToList();
  97. }
  98. return new List<Image>();
  99. }
  100. }
  101. #endregion
  102. #region Constructors
  103. internal Header( DocX document, XElement xml, PackagePart mainPart ) : base( document, xml )
  104. {
  105. this.PackagePart = mainPart;
  106. }
  107. #endregion
  108. #region Public Methods
  109. public override Paragraph InsertParagraph()
  110. {
  111. var p = base.InsertParagraph();
  112. p.PackagePart = this.PackagePart;
  113. return p;
  114. }
  115. public override Paragraph InsertParagraph( int index, string text, bool trackChanges )
  116. {
  117. var p = base.InsertParagraph( index, text, trackChanges );
  118. p.PackagePart = this.PackagePart;
  119. return p;
  120. }
  121. public override Paragraph InsertParagraph( Paragraph p )
  122. {
  123. p.PackagePart = this.PackagePart;
  124. return base.InsertParagraph( p );
  125. }
  126. public override Paragraph InsertParagraph( int index, Paragraph p )
  127. {
  128. p.PackagePart = this.PackagePart;
  129. return base.InsertParagraph( index, p );
  130. }
  131. public override Paragraph InsertParagraph( int index, string text, bool trackChanges, Formatting formatting )
  132. {
  133. var p = base.InsertParagraph( index, text, trackChanges, formatting );
  134. p.PackagePart = this.PackagePart;
  135. return p;
  136. }
  137. public override Paragraph InsertParagraph( string text )
  138. {
  139. var p = base.InsertParagraph( text );
  140. p.PackagePart = this.PackagePart;
  141. return p;
  142. }
  143. public override Paragraph InsertParagraph( string text, bool trackChanges )
  144. {
  145. var p = base.InsertParagraph( text, trackChanges );
  146. p.PackagePart = this.PackagePart;
  147. return p;
  148. }
  149. public override Paragraph InsertParagraph( string text, bool trackChanges, Formatting formatting )
  150. {
  151. var p = base.InsertParagraph( text, trackChanges, formatting );
  152. p.PackagePart = this.PackagePart;
  153. return p;
  154. }
  155. public override Paragraph InsertEquation( String equation )
  156. {
  157. var p = base.InsertEquation( equation );
  158. p.PackagePart = this.PackagePart;
  159. return p;
  160. }
  161. public override Table InsertTable( int rowCount, int columnCount )
  162. {
  163. var table = base.InsertTable( rowCount, columnCount );
  164. return this.SetMainPart( table );
  165. }
  166. public override Table InsertTable( int index, Table t )
  167. {
  168. var table = base.InsertTable( index, t );
  169. return this.SetMainPart( table );
  170. }
  171. public override Table InsertTable( Table t )
  172. {
  173. var table = base.InsertTable( t );
  174. return this.SetMainPart( table );
  175. }
  176. public override Table InsertTable( int index, int rowCount, int columnCount )
  177. {
  178. var table = base.InsertTable( index, rowCount, columnCount );
  179. return this.SetMainPart( table );
  180. }
  181. #endregion
  182. #region Private Methods
  183. private Table SetMainPart( Table table )
  184. {
  185. if( table != null )
  186. {
  187. table.PackagePart = this.PackagePart;
  188. }
  189. return table;
  190. }
  191. #endregion
  192. }
  193. }