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()); } } }
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("&", "&").Replace("<", "<").Replace(">", ">"); } //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(); } }