Пример #1
0
        public void Apply(DocumentProperties dop)
        {
            //start w:settings
            _writer.WriteStartElement("w", "settings", OpenXmlNamespaces.WordprocessingML);

            //zoom
            _writer.WriteStartElement("w", "zoom", OpenXmlNamespaces.WordprocessingML);
            _writer.WriteAttributeString("w", "percent", OpenXmlNamespaces.WordprocessingML, dop.wScaleSaved.ToString());
            ZoomType zoom = (ZoomType)dop.zkSaved;

            if (zoom != ZoomType.none)
            {
                _writer.WriteAttributeString("w", "val", OpenXmlNamespaces.WordprocessingML, zoom.ToString());
            }
            _writer.WriteEndElement();

            //doc protection
            //<w:documentProtection w:edit="forms" w:enforcement="1"/>


            //embed system fonts
            if (!dop.fDoNotEmbedSystemFont)
            {
                _writer.WriteElementString("w", "embedSystemFonts", OpenXmlNamespaces.WordprocessingML, "");
            }

            //mirror margins
            if (dop.fMirrorMargins)
            {
                _writer.WriteElementString("w", "mirrorMargins", OpenXmlNamespaces.WordprocessingML, "");
            }

            //evenAndOddHeaders
            if (dop.fFacingPages)
            {
                _writer.WriteElementString("w", "evenAndOddHeaders", OpenXmlNamespaces.WordprocessingML, "");
            }

            //proof state
            XmlElement proofState = _nodeFactory.CreateElement("w", "proofState", OpenXmlNamespaces.WordprocessingML);

            if (dop.fGramAllClean)
            {
                appendValueAttribute(proofState, "grammar", "clean");
            }
            if (proofState.Attributes.Count > 0)
            {
                proofState.WriteTo(_writer);
            }

            //stylePaneFormatFilter
            if (dop.grfFmtFilter != 0)
            {
                _writer.WriteStartElement("w", "stylePaneFormatFilter", OpenXmlNamespaces.WordprocessingML);
                _writer.WriteAttributeString("w", "val", OpenXmlNamespaces.WordprocessingML, String.Format("{0:x4}", dop.grfFmtFilter));
                _writer.WriteEndElement();
            }

            //default tab stop
            _writer.WriteStartElement("w", "defaultTabStop", OpenXmlNamespaces.WordprocessingML);
            _writer.WriteAttributeString("w", "val", OpenXmlNamespaces.WordprocessingML, dop.dxaTab.ToString());
            _writer.WriteEndElement();

            //drawing grid
            if (dop.dogrid != null)
            {
                _writer.WriteStartElement("w", "displayHorizontalDrawingGridEvery", OpenXmlNamespaces.WordprocessingML);
                _writer.WriteAttributeString("w", "val", OpenXmlNamespaces.WordprocessingML, dop.dogrid.dxGridDisplay.ToString());
                _writer.WriteEndElement();

                _writer.WriteStartElement("w", "displayVerticalDrawingGridEvery", OpenXmlNamespaces.WordprocessingML);
                _writer.WriteAttributeString("w", "val", OpenXmlNamespaces.WordprocessingML, dop.dogrid.dyGridDisplay.ToString());
                _writer.WriteEndElement();

                if (dop.dogrid.fFollowMargins == false)
                {
                    _writer.WriteElementString("w", "doNotUseMarginsForDrawingGridOrigin", OpenXmlNamespaces.WordprocessingML, "");
                }
            }

            //typography
            if (dop.doptypography != null)
            {
                if (dop.doptypography.fKerningPunct == false)
                {
                    _writer.WriteElementString("w", "noPunctuationKerning", OpenXmlNamespaces.WordprocessingML, "");
                }
            }

            //footnote properties
            XmlElement footnotePr = _nodeFactory.CreateElement("w", "footnotePr", OpenXmlNamespaces.WordprocessingML);

            if (dop.nFtn != 0)
            {
                appendValueAttribute(footnotePr, "numStart", dop.nFtn.ToString());
            }
            if (dop.rncFtn != 0)
            {
                appendValueAttribute(footnotePr, "numRestart", dop.rncFtn.ToString());
            }
            if (dop.Fpc != 0)
            {
                appendValueAttribute(footnotePr, "pos", ((FootnotePosition)dop.Fpc).ToString());
            }
            if (footnotePr.Attributes.Count > 0)
            {
                footnotePr.WriteTo(_writer);
            }


            writeCompatibilitySettings(dop);

            writeRsidList();

            //close w:settings
            _writer.WriteEndElement();

            _writer.Flush();
        }