Пример #1
0
        private void ZnakovyStylImpl(TextRunEventArgs ev)
        {
            if (_nastaveni.ZahrnoutTextOdstavce)
            {
                _textOdstavceSb.Append(ev.Text);
            }

            //mstrTextOdstavce += ev.Text;
            if (_nastaveni.ZahrnoutTextZnakovychStylu)
            {
                if (ev.Text == null)
                {
                    ev.Text = String.Empty;
                }
                string sText = _nastaveni.OdstranitPocatecniAKoncoveMezery ? ev.Text.Trim() : ev.Text;

                if (Nastaveni.StylyLokace.Contains(ev.Style.UIName))
                {
                    if (_aktualniLokace == null)
                    {
                        _aktualniLokace = sText;
                    }
                    else if (abRegex.IsMatch(sText) && slashAbRegex.IsMatch(_aktualniLokace))
                    {
                        _aktualniLokace = _aktualniLokace.Substring(0, _aktualniLokace.LastIndexOf("/") + 1) + sText;
                    }
                    else
                    {
                        _aktualniLokace = sText;
                    }
                }

                //pokud se odstraňovaly počáteční a koncové mezery a text je prázdný, znamená to, že text obsahoval pouze mezery
                //v tom případě se do výsledků takový text zahrne (půjde o mezery, tabulátory)
                if (_nastaveni.OdstranitPocatecniAKoncoveMezery && sText.Length == 0 && ev.Text != null)
                {
                    sText = ev.Text;
                }

                Jev jv = new Jev(ev.Language, sText, null);

                Jevy jvs = GetJevy(ev.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Useky);
                //jvs.Add(jv);

                Jevy jevyOdstavce = GetJevy(_jevyAktualnihoOdstavce, _souborDocx,
                                            ev.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Useky);
                jevyOdstavce.Add(jv);

                _usekyAktulanihoOdstravceInContinuo.Add(new Usek(ev.Style.UIName, ev.Text, _aktualniLokace));


                //jevyAktualnihoOdstavce.Add(jevyOdstavce);

                if (_nastaveni.ZahrnoutTextOdstavce)
                {
                    string sOdstavecZnak   = _aktualniOdstavecEventArgs.Style.ID + "+" + ev.Style.ID;
                    string sOdstavecZnakID = Jevy.GetID(ev.Language, sOdstavecZnak);

                    if (!_aktualniSkupinaJevu.ContainsID((sOdstavecZnakID)))
                    {
                        jvs       = new Jevy(TypJevu.Useky, _souborDocx, ev.Language, sOdstavecZnak);
                        jvs.Popis = _aktualniOdstavecEventArgs.Style.UIName + " + " + ev.Style.UIName;
                        _aktualniSkupinaJevu.Add(jvs);
                    }

                    _aktualniSkupinaJevu[sOdstavecZnakID].Add(jv.Clone());
                }
            }
        }
Пример #2
0
        private void mdxrReader_KonecOdstavce(object sender, ParagraphEventArgs ev)
        {
            _predchoziUsekZnakovehoStylu = null;

            if (!_nastaveni.ZahrnoutTextOdstavce)
            {
                return;
            }
            string sId = Jevy.GetID(ev.Style.Language, ev.Style.ID);

            if (_textOdstavce == null)
            {
                _textOdstavce = "\r\n";
            }
            if (_textOdstavceSb.Length == 0)
            {
                _textOdstavceSb.AppendLine();
            }
            //Jev jv = new Jev(ev.Style.Language, mstrTextOdstavce, null);
            string sText = _nastaveni.OdstranitPocatecniAKoncoveMezery
                ? _textOdstavceSb.ToString().Trim()
                : _textOdstavceSb.ToString();

            StringBuilder jevySb = new StringBuilder(sText.Length);

            if (!_styly.ContainsKey(ev.Style.UIName))
            {
                _styly.Add(ev.Style.UIName, _styly.Count + 1);
            }
            int stylOdstavce = _styly[ev.Style.UIName];

            //jevySb.Append(String.Format("<p i=\"{0}\" s=\"{1}\">", ++poradiOdstavce, ev.Style.UIName));
            //jevySb.Append(String.Format("<p l=\"{0}\" i=\"{1}\" s=\"{2}\">", _aktualniLokace, ++poradiOdstavce, stylOdstavce));

            XElement root = new XElement("p",
                                         new XAttribute("l", _aktualniLokace ?? "0"),
                                         new XAttribute("i", ++_poradiOdstavce),
                                         new XAttribute("s", stylOdstavce)
                                         );


            char[] xmlEscape = new[] { '&', '<', '>' };

            foreach (Usek jev in _usekyAktulanihoOdstravceInContinuo)
            {
                if (!_styly.ContainsKey(jev.Styl))
                {
                    _styly.Add(jev.Styl, _styly.Count + 1);
                }
                int stylZnaku = _styly[jev.Styl];

                //jevySb.Append(String.Format("<r s=\"{0}\">{1}</r>", jev.Styl, jev.Text));
                string text = jev.Text;
                if (text.IndexOfAny(xmlEscape) > -1)
                {
                    text = jev.Text.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;");
                }
                //jevySb.Append(String.Format("<r l=\"{0}\" s=\"{1}\">{2}</r>", jev.Lokace, stylZnaku, text));
                //jevySb.Append(String.Format("<r s=\"{0}\">{1}</r>", stylZnaku, text));

                root.Add(new XElement("r",
                                      new XAttribute("s", stylZnaku),
                                      new XText(text)
                                      ));
            }

            //jevySb.Append("</p>");

            XDocument document = new XDocument();

            document.Add(root);

            string textOdstavce = jevySb.ToString();

            //ObsahDokumentu.Add(textOdstavce);
            textOdstavce = document.ToString(SaveOptions.DisableFormatting);
            ObsahDokumentu.Add(textOdstavce);

            foreach (Jevy jevy in _jevyAktualnihoOdstavce)
            {
                Jevy tmpJevy = GetJevy(jevy.Jazyk, jevy.Identifikator, jevy.Popis, jevy.Druh);
                foreach (Jev jev in jevy)
                {
                    //jev.Kontexty.Add(sText);
                    //jev.Kontexty.Add(textOdstavce);
                    jev.Kontexty.Add(_poradiOdstavce.ToString(CultureInfo.InvariantCulture));
                    //jev.Kontexty.Add(poradiOdstavce.ToString(CultureInfo.InvariantCulture));
                    tmpJevy.Add(jev);
                }
            }


            Jev  jv  = new Jev(ev.Style.Language, sText, null);
            Jevy jvs = GetJevy(ev.Style.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Odstavce);

            jvs.Add(jv);
            _aktualniSkupinaJevu[sId] = jvs;
            if (_aktualniOdstavecStack.Count == 0)
            {
                _aktualniOdstavecEventArgs = null;
            }
            else
            {
                _aktualniOdstavecEventArgs = _aktualniOdstavecStack.Pop();
            }
        }