我有一堆文本文件要转换为rtf。只是更改代码中的扩展名不起作用,底层文件是相同的。我需要文本是rtf格式。谁知道我怎么做到这一点?
问题是,当我加载纯文本文件时,RichTextBox没有格式化新行,因此它将其作为一个连续的文本块加载,而不是插入新行。
唯一的解决方案是打开纯文本文件和“另存为”rtf。
只需将文本添加到空RTF模板中,纯文本无论如何都没有任何格式化,所以让我们说rtf模板看起来像这样(来自wikipedia示例):
{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard _TEXT_CONTENT_HERE_ }
更新:我忘记了新的线条,大括号和反斜杠:)
public static string PlainTextToRtf(string plainText)
{
string escapedPlainText = plainText.Replace(@"\", @"\\").Replace("{", @"\{").Replace("}", @"\}");
string rtf = @"{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard ";
rtf += escapedPlainText.Replace(Environment.NewLine, @" \par ");
rtf += " }";
return rtf;
}
安东尼奥的改进方法(注意我定义了一个代码页\ ansicpg1250):
public static string PlainTextToRtf(string plainText)
{
if (string.IsNullOrEmpty(plainText))
return "";
string escapedPlainText = plainText.Replace(@"\", @"\\").Replace("{", @"\{").Replace("}", @"\}");
escapedPlainText = EncodeCharacters(escapedPlainText);
string rtf = @"{\rtf1\ansi\ansicpg1250\deff0{\fonttbl\f0\fswiss Helvetica;}\f0\pard ";
rtf += escapedPlainText.Replace(Environment.NewLine, "\\par\r\n ") + ;
rtf += " }";
return rtf;
}
.
编码字符(波兰语)方法:
private static string EncodeCharacters(string text)
{
if (string.IsNullOrEmpty(text))
return "";
return text
.Replace("ą", @"\'b9")
.Replace("ć", @"\'e6")
.Replace("ę", @"\'ea")
.Replace("ł", @"\'b3")
.Replace("ń", @"\'f1")
.Replace("ó", @"\'f3")
.Replace("ś", @"\'9c")
.Replace("ź", @"\'9f")
.Replace("ż", @"\'bf")
.Replace("Ą", @"\'a5")
.Replace("Ć", @"\'c6")
.Replace("Ę", @"\'ca")
.Replace("Ł", @"\'a3")
.Replace("Ń", @"\'d1")
.Replace("Ó", @"\'d3")
.Replace("Ś", @"\'8c")
.Replace("Ź", @"\'8f")
.Replace("Ż", @"\'af");
}
Zbignew Wiadro的一个版本(减去抛光字符)试图避免多个字符串分配。
public static string Convert(string s)
{
var ret = new StringBuilder((int) (71 + (s.Length * 1.1)));
ret.Append(@"{\rtf1\ansi\ansicpg1250\deff0{\fonttbl\f0\fswiss Helvetica;}\f0\pard ");
foreach (var letter in s)
{
switch (letter)
{
case '\\':
case '{':
case '}':
ret.Append('\\');
break;
case '\r':
ret.Append("\\par");
break;
}
ret.Append(letter);
}
ret.Append(" }");
return ret.ToString();
}
设计很简单。
我发现了一种应该有效的方法。使用TextEdit打开纯文本文件(.txt)。单击左上方菜单栏中的“格式”下拉列表。应该有一个名为Make Rich Text的按钮。当您单击它时,它应该将所有文本格式化为丰富。切换按钮使其成为纯文本。它还将文件类型更改为.rtf。除非你有Windows,否则这应该适用于最新的操作系统。