つまらないタイトルで申し訳ありませんが、より良い言い方が思いつかなかったので、これについて数日間Bingleingを持ってください.
RTF ファイルを読み込むコードがあり、差し込みフィールドとして機能するようにプレースホルダーを配置しました。コードはテキストを置き換えますが、ファイルを保存し直すと、新しい値が表示されません。
var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
text = text.Replace("{\\{Title\\}\\}", "Mr.");
text = text.Replace("{\\{LastName\\}\\}", "Johnson");
text = text.Replace("{\\{FirstName\\}\\}", "James");
置換前のRTF: {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} {*\generator Riched20 6.2.9200}\viewkind4\uc1\pard\sa200\sl276 \slmult1\f0\fs22\lang9 こんにちは {{Title}} {{LastName}}\par 元気ですか、{{FirstName}}\par }
置換後の RTF: {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} {*\generator Riched20 6.2.9200}\viewkind4\uc1\pard\sa200\sl276 \slmult1\f0\fs22\lang9 やあ、\さん。\Johnson\par お元気ですか、\James\par }
保存してメモ帳で開いた後の RTF: {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} \viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0 \fs22 こんにちは。\par お元気ですか、\par }
ファイルを正しい形式で保存するために必要な他の手順はありますか? RichTextBox コントロールも使用して、文字列をロードしてから Save() メソッドを呼び出してみました。これは私に同じ結果をもたらします。
ありがとう、ジェームズ
この投稿を読んだ後、RTFテキストをクリーンアップし、次のコードを使用してそれを理解しました:
var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
rtb.Rtf = text;
rtb.Text = rtb.Text.Replace("{{Title}}", "Mr.");
rtb.Text = rtb.Text.Replace("{{LastName}}", "Johnson");
rtb.Text = rtb.Text.Replace("{{FirstName}}", "James");
rtb.SaveFile(@"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Johnson2.rtf");