private void btnAddLineBreaks_Click(object sender, EventArgs e)
{
IDataObject dataObject = Clipboard.GetDataObject();
if (!dataObject.GetDataPresent(DataFormats.Html)) return;
string html = dataObject.GetData(DataFormats.Html) as string;
string endFragmentTag = "EndFragment";
if (!html.Contains(endFragmentTag)) return;
string pattern = endFragmentTag + ":(?<n>[0-9]{8})";
var findLen = Regex.Match(html, pattern);
if (!findLen.Success) return;
var len = int.Parse(findLen.Groups["n"].Value);
var htmlStart = html.IndexOf("<HTML");
html = Regex.Replace(html, "\n", (m) =>
{
if (m.Index < htmlStart) return m.Value;
len += 6;
return m.Value + "<br />";
});
//change EndFragment and EndSelection
string origLenText = findLen.Value;
html = html.Replace(
origLenText,
string.Format("{0}:{1:00000000}", endFragmentTag, len))
.Replace(
origLenText.Replace("Fragment", "Selection"),
string.Format("EndSelection:{0:00000000}", len));
DataObject newDataObject = new DataObject();
newDataObject.SetData(DataFormats.Html, html);
newDataObject.SetData(DataFormats.Text,
dataObject.GetData(DataFormats.Text) as string);
Clipboard.SetDataObject(newDataObject, true);
}