将RTF字符串合并为一个

问题描述 投票:2回答:1

我正在尝试将多个RTF字符串合并为一个。我想保留每个输入字符串的格式

这是我的代码:

string input1 = "{\\rtf1\\ansi\\ansicpg1250\\deff0\\deflang1029{\\fonttbl{\\f0\\fnil\\fcharset238 Tahoma;}}\r\n{\\*\\generator Riched20 12.0.6556.5000;}\\viewkind4\\uc1\r\n\\pard\\f0\\fs16 St\\'f8edisko 222, ppokji\\'9a\\'9dovna Wustenrot PU 15.20022.0037626\\par\r\nPlatba na fakturu, p\\'f8epolsat na poji\\'9a\\'9dovnu a pln\\'ecn\\'ed na \\'fa\\'e8et klienta.\\par\r\n\\'c8\\'edsklo \\'fa\\'e8tu bude dod\\'e1no\\par\r\n}\r\n\0";
string input2 = "{\\rtf1\\ansi\\ansicpg1250\\uc1\\deff0\\deflang0\\deflangfe0{\\fonttbl{\\f0\\fnil Times New Roman;}{\\f1\\fnil Arial;}{\\f2\\fnil Verdana;}{\\f3\\fnil Webdings;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue255;\\red0\\green255\\blue0;\\red0\\green200\\blue150;\\red255\\green0\\blue255;\\red255\\green0\\blue0;\\red255\\green255\\blue0;\\red255\\green255\\blue255;\\red0\\green0\\blue128;\\red0\\green128\\blue128;\\red0\\green128\\blue0;\\red128\\green0\\blue128;\\red128\\green0\\blue0;\\red128\\green128\\blue0;\\red128\\green128\\blue128;\\red192\\green192\\blue192;\\red255\\green128\\blue64;}\r\n\\pard\\sb0\\sa50\\plain\\f1\\cf1\\b0\\i0\\fs18 Při demontáži lišty LZ dveří zjištěna vada lakování.\\par}";

var richTxtBox = new RichTextBox();
var richTxtBox2 = new RichTextBox();
RichTextBox ricTxtArray = new RichTextBox(); ;
//richTxtBox.Sel
foreach (string text in result)
{ 
    if (text.StartsWith("{")) {
        if (!string.IsNullOrWhiteSpace(richTxtBox.Text)) { 
            richTxtBox.AppendText(Environment.NewLine); 
        }
        richTxtBox2.Rtf = text;

        richTxtBox.AppendText(richTxtBox2.Text);
    }
    else {
        if (!string.IsNullOrWhiteSpace(richTxtBox.Text)) { 
            richTxtBox.AppendText(Environment.NewLine); 
        }
        richTxtBox.AppendText(text); 
    }           
}

return richTxtBox.Rtf;

当前,我在输出中得到这样的东西:

"{\\rtf1\\ansi\\ansicpg1250\\deff0\\nouicompat\\deflang1029{\\fonttbl{\\f0\\fnil\\fcharset238 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n{\\*\\generator Riched20 10.0.17763}\\viewkind4\\uc1 \r\n\\pard\\f0\\fs17 St\\'f8edisko 222, ppokji\\'9a\\'9dovna Wustenrot PU 15.20022.0037626\\par\r\nPlatba na fakturu, p\\'f8epolsat na poji\\'9a\\'9dovnu a pln\\'ecn\\f1\\lang1033\\'ed na \\'fa\\f0\\'e8et klienta.\\par\r\n\\'c8\\f1\\'edsklo \\'fa\\f0\\'e8tu bude dod\\f1\\'e1no\\par\r\n\\f0\\lang1029 P\\'f8i demont\\f1\\lang1033\\'e1\\f0\\'9ei li\\'9aty LZ dve\\'f8\\f1\\'ed zji\\f0\\'9at\\'ecna vada lakov\\f1\\'e1n\\'ed.\\f0\\lang1029\\par\r\n}\r\n"

您可以看到我在input1中将字体设置为Tahoma,但是在输出中完全没有它。

我的想法是创建单独的段落,每个段落都有自己的格式,但是该怎么做?

c# .net rtf
1个回答
1
投票

您不能使用AppendText方法添加具有Rtf格式的字符串。由于AppendRtf方法不存在,因此我们必须通过设置SelectionStartSelectionStartSelectionLength来模仿它。

© www.soinside.com 2019 - 2024. All rights reserved.