Пример #1
0
        /// <summary>
        /// Fill/read the existing master page styles.
        /// </summary>
        /// <param name="textDocument">The owner text document.</param>
        public void FillFromXMLDocument(TextDocument textDocument)
        {
            TextMasterPageCollection txtMPCollection = new TextMasterPageCollection();
            IEnumerable <XElement>   masterPageNodes = textDocument.DocumentStyles.Styles.Descendants(Ns.Style + "master-page");

            if (masterPageNodes != null)
            {
                foreach (XElement mpNode in masterPageNodes)
                {
                    // Build the master page
                    TextMasterPage txtMasterPage = new TextMasterPage(textDocument, mpNode);
                    // Even if there is no usage of header within the master page style,
                    // but of course there exists the header:style node, so we create
                    // the TextPageHeader.
                    txtMasterPage.TextPageHeader = new TextPageHeader();
                    txtMasterPage.TextPageHeader.TextDocument   = textDocument;
                    txtMasterPage.TextPageHeader.TextMasterPage = txtMasterPage;
                    // see comment above its the same procedure
                    txtMasterPage.TextPageFooter = new TextPageFooter();
                    txtMasterPage.TextPageFooter.TextDocument   = textDocument;
                    txtMasterPage.TextPageFooter.TextMasterPage = txtMasterPage;

                    // Build header content
                    XElement headerNode = mpNode.Descendants(Ns.Style + "header").FirstOrDefault();
                    if (headerNode != null)
                    {
                        txtMasterPage.TextPageHeader.ContentNode = headerNode;
                        ContentCollection contents = GetContentHeaderFooter(headerNode, textDocument);
                        if (contents != null)
                        {
                            headerNode.RemoveAll();
                            foreach (IContent iContent in contents)
                            {
                                txtMasterPage.TextPageHeader.ContentCollection.Add(iContent);
                            }
                        }
                    }

                    // Build footer content
                    XElement footerNode = mpNode.Descendants(Ns.Style + "footer").FirstOrDefault();
                    if (footerNode != null)
                    {
                        txtMasterPage.TextPageFooter.ContentNode = footerNode;
                        ContentCollection contents = GetContentHeaderFooter(footerNode, textDocument);
                        if (contents != null)
                        {
                            footerNode.RemoveAll();
                            foreach (IContent iContent in contents)
                            {
                                txtMasterPage.TextPageFooter.ContentCollection.Add(iContent);
                            }
                        }
                    }

                    // Build master page layout
                    XElement txtPageLayoutNode = textDocument.DocumentStyles.Styles.Descendants(Ns.Style + "page-layout")
                                                 .Where(
                        e => string.Equals((string)e.Attribute(Ns.Style + "name"), txtMasterPage.PageLayoutName)).
                                                 FirstOrDefault();
                    if (txtPageLayoutNode != null)
                    {
                        // Build master page layout properties
                        XElement txtPageLayoutPropNode =
                            txtPageLayoutNode.Descendants(Ns.Style + "page-layout-properties").FirstOrDefault();
                        if (txtPageLayoutPropNode != null)
                        {
                            TextPageLayout txtPageLayout = new TextPageLayout(
                                textDocument, txtPageLayoutNode, txtPageLayoutPropNode);
                            txtMasterPage.TextPageLayout = txtPageLayout;
                        }
                        // Build master page header layout
                        XElement txtHeaderStyleNode =
                            txtPageLayoutNode.Descendants(Ns.Style + "header-style").FirstOrDefault();
                        if (txtHeaderStyleNode != null)
                        {
                            txtMasterPage.TextPageHeader.StyleNode = txtHeaderStyleNode;
                            if (txtHeaderStyleNode.FirstNode != null
                                &&
                                ((XElement)txtHeaderStyleNode.FirstNode).Name ==
                                Ns.Style + "header-footer-properties")
                            {
                                txtMasterPage.TextPageHeader.PropertyNode = (XElement)txtHeaderStyleNode.FirstNode;
                            }
                        }
                        // Build master page footer layout
                        XElement txtFooterStyleNode =
                            txtPageLayoutNode.Descendants(Ns.Style + "footer-style").FirstOrDefault();
                        if (txtFooterStyleNode != null)
                        {
                            txtMasterPage.TextPageFooter.StyleNode = txtFooterStyleNode;
                            if (txtFooterStyleNode.FirstNode != null
                                &&
                                ((XElement)txtFooterStyleNode.FirstNode).Name ==
                                Ns.Style + "header-footer-properties")
                            {
                                txtMasterPage.TextPageFooter.PropertyNode = (XElement)txtFooterStyleNode.FirstNode;
                            }
                        }
                    }

                    txtMPCollection.Add(txtMasterPage);
                }
            }
            textDocument.TextMasterPageCollection = txtMPCollection;
        }
		/// <summary>
		/// Fill/read the existing master page styles.
		/// </summary>
		/// <param name="textDocument">The owner text document.</param>
		public void FillFromXMLDocument(TextDocument textDocument)
		{
			try
			{
				TextMasterPageCollection txtMPCollection = new TextMasterPageCollection();
				XmlNodeList masterPageNodes = textDocument.XmlDoc.SelectNodes(
					"//style:master-page", textDocument.NamespaceManager);
				if (masterPageNodes != null)
				{
					foreach(XmlNode mpNode in masterPageNodes)
					{
						// Build the master page
						TextMasterPage txtMasterPage = new TextMasterPage(textDocument, mpNode);
						// Even if there is no usage of header within the master page style,
						// but of course there exists the header:style node, so we create
						// the TextPageHeader.
						txtMasterPage.TextPageHeader = new TextPageHeader();
						txtMasterPage.TextPageHeader.TextDocument = textDocument;
						txtMasterPage.TextPageHeader.TextMasterPage = txtMasterPage;
						// see comment above its the same procedure
						txtMasterPage.TextPageFooter = new TextPageFooter();
						txtMasterPage.TextPageFooter.TextDocument = textDocument;
						txtMasterPage.TextPageFooter.TextMasterPage = txtMasterPage;
						
						// Build header content
						XmlNode headerNode = mpNode.SelectSingleNode("//style:header", textDocument.NamespaceManager);
						if (headerNode != null)
						{
							txtMasterPage.TextPageHeader.ContentNode = headerNode;
							ContentCollection contents = GetContentHeaderFooter(headerNode, textDocument);
							if (contents != null) 
							{
								headerNode.RemoveAll();
								foreach(IContent iContent in contents) 
								{
									txtMasterPage.TextPageHeader.ContentCollection.Add(iContent);
								}
							}
						}

						// Build footer content
						XmlNode footerNode = mpNode.SelectSingleNode("//style:footer", textDocument.NamespaceManager);
						if (footerNode != null)
						{
							txtMasterPage.TextPageFooter.ContentNode = footerNode;
							ContentCollection contents = GetContentHeaderFooter(footerNode, textDocument);
							if (contents != null) 
							{
								footerNode.RemoveAll();
								foreach(IContent iContent in contents) 
								{
									txtMasterPage.TextPageFooter.ContentCollection.Add(iContent);
								}
							}
						}

						// Build master page layout
						XmlNode txtPageLayoutNode = textDocument.XmlDoc.SelectSingleNode(
							"//style:page-layout[@style:name='"+txtMasterPage.PageLayoutName+"']",
							textDocument.NamespaceManager);
						if (txtPageLayoutNode != null)
						{
							// Build master page layout properties
							XmlNode txtPageLayoutPropNode = txtPageLayoutNode.SelectSingleNode(
								"//style:page-layout-properties", textDocument.NamespaceManager);
							if (txtPageLayoutPropNode != null)
							{
								TextPageLayout txtPageLayout = new TextPageLayout(
									textDocument, txtPageLayoutNode, txtPageLayoutPropNode);
								txtMasterPage.TextPageLayout = txtPageLayout;
							}
							// Build master page header layout
							XmlNode txtHeaderStyleNode = txtPageLayoutNode.SelectSingleNode(
								"//style:header-style", textDocument.NamespaceManager);
							if (txtHeaderStyleNode != null)
							{
								txtMasterPage.TextPageHeader.StyleNode = txtHeaderStyleNode;
								if (txtHeaderStyleNode.FirstChild != null
									&& txtHeaderStyleNode.FirstChild.Name == "style:header-footer-properties")
									txtMasterPage.TextPageHeader.PropertyNode = txtHeaderStyleNode.FirstChild;
							}
							// Build master page footer layout
							XmlNode txtFooterStyleNode = txtPageLayoutNode.SelectSingleNode(
								"//style:footer-style", textDocument.NamespaceManager);
							if (txtFooterStyleNode != null)
							{
								txtMasterPage.TextPageFooter.StyleNode = txtFooterStyleNode;
								if (txtFooterStyleNode.FirstChild != null
									&& txtFooterStyleNode.FirstChild.Name == "style:header-footer-properties")
									txtMasterPage.TextPageFooter.PropertyNode = txtFooterStyleNode.FirstChild;
							}
						}
						
						txtMPCollection.Add(txtMasterPage);
					}
				}
				textDocument.TextMasterPageCollection = txtMPCollection;
			}
			catch(Exception)
			{
				throw;
			}
		}
Пример #3
0
        /// <summary>
        /// Fill/read the existing master page styles.
        /// </summary>
        /// <param name="textDocument">The owner text document.</param>
        public void FillFromXMLDocument(TextDocument textDocument)
        {
            try
            {
                TextMasterPageCollection txtMPCollection = new TextMasterPageCollection();
                XmlNodeList masterPageNodes = textDocument.XmlDoc.SelectNodes(
                    "//style:master-page", textDocument.NamespaceManager);

                if (masterPageNodes != null)
                {
                    foreach (XmlNode mpNode in masterPageNodes)
                    {
                        // Build the master page
                        TextMasterPage txtMasterPage = new TextMasterPage(textDocument, mpNode);
                        // Even if there is no usage of header within the master page style,
                        // but of course there exists the header:style node, so we create
                        // the TextPageHeader.
                        txtMasterPage.TextPageHeader = new TextPageHeader();
                        txtMasterPage.TextPageHeader.TextDocument   = textDocument;
                        txtMasterPage.TextPageHeader.TextMasterPage = txtMasterPage;
                        // see comment above its the same procedure
                        txtMasterPage.TextPageFooter = new TextPageFooter();
                        txtMasterPage.TextPageFooter.TextDocument   = textDocument;
                        txtMasterPage.TextPageFooter.TextMasterPage = txtMasterPage;

                        // Build header content
                        XmlNode headerNode = mpNode.SelectSingleNode(".//style:header", textDocument.NamespaceManager);
                        if (headerNode != null)
                        {
                            txtMasterPage.TextPageHeader.ContentNode = headerNode;
                            ContentCollection contents = GetContentHeaderFooter(headerNode, textDocument);
                            if (contents != null)
                            {
                                headerNode.RemoveAll();
                                foreach (IContent iContent in contents)
                                {
                                    txtMasterPage.TextPageHeader.ContentCollection.Add(iContent);
                                }
                            }
                        }

                        // Build footer content
                        XmlNode footerNode = mpNode.SelectSingleNode(".//style:footer", textDocument.NamespaceManager);
                        if (footerNode != null)
                        {
                            txtMasterPage.TextPageFooter.ContentNode = footerNode;
                            ContentCollection contents = GetContentHeaderFooter(footerNode, textDocument);
                            if (contents != null)
                            {
                                footerNode.RemoveAll();
                                foreach (IContent iContent in contents)
                                {
                                    txtMasterPage.TextPageFooter.ContentCollection.Add(iContent);
                                }
                            }
                        }

                        // Build master page layout
                        XmlNode txtPageLayoutNode = textDocument.XmlDoc.SelectSingleNode(
                            "//style:page-layout[@style:name='" + txtMasterPage.PageLayoutName + "']",
                            textDocument.NamespaceManager);
                        if (txtPageLayoutNode != null)
                        {
                            // Build master page layout properties
                            XmlNode txtPageLayoutPropNode = txtPageLayoutNode.SelectSingleNode(
                                "//style:page-layout-properties", textDocument.NamespaceManager);
                            if (txtPageLayoutPropNode != null)
                            {
                                TextPageLayout txtPageLayout = new TextPageLayout(
                                    textDocument, txtPageLayoutNode, txtPageLayoutPropNode);
                                txtMasterPage.TextPageLayout = txtPageLayout;
                            }
                            // Build master page header layout
                            XmlNode txtHeaderStyleNode = txtPageLayoutNode.SelectSingleNode(
                                "//style:header-style", textDocument.NamespaceManager);
                            if (txtHeaderStyleNode != null)
                            {
                                txtMasterPage.TextPageHeader.StyleNode = txtHeaderStyleNode;
                                if (txtHeaderStyleNode.FirstChild != null &&
                                    txtHeaderStyleNode.FirstChild.Name == "style:header-footer-properties")
                                {
                                    txtMasterPage.TextPageHeader.PropertyNode = txtHeaderStyleNode.FirstChild;
                                }
                            }
                            // Build master page footer layout
                            XmlNode txtFooterStyleNode = txtPageLayoutNode.SelectSingleNode(
                                "//style:footer-style", textDocument.NamespaceManager);
                            if (txtFooterStyleNode != null)
                            {
                                txtMasterPage.TextPageFooter.StyleNode = txtFooterStyleNode;
                                if (txtFooterStyleNode.FirstChild != null &&
                                    txtFooterStyleNode.FirstChild.Name == "style:header-footer-properties")
                                {
                                    txtMasterPage.TextPageFooter.PropertyNode = txtFooterStyleNode.FirstChild;
                                }
                            }
                        }

                        txtMPCollection.Add(txtMasterPage);
                    }
                }
                textDocument.TextMasterPageCollection = txtMPCollection;
            }
            catch (Exception)
            {
                throw;
            }
        }