我有一堆文本文件要转换为rtf。只是更改代码中的扩展名不起作用,底层文件是相同的。我需要文本是rtf格式。有谁知道我怎么能这样做?
问题是,当我加载纯文本文件时,RichTextBox没有格式化新行,因此它将其作为一个连续的文本块加载,而不是插入新行。
唯一的解决方案是打开纯文本文件和“另存为”rtf。
答案 0 :(得分:16)
只需将文本添加到空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;
}
答案 1 :(得分:3)
Antonio的改进方法(注意我定义了一个代码页\ 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");
}
答案 2 :(得分:0)
Zbignew Wiadro的答案版本(减去波兰字符),试图避免分配多个字符串。
<a class="text-dark" href="">become a driver</a>
<a class="text-dark" href="">driver</a>
设计很简单。
答案 3 :(得分:0)
我找到了一种可行的方法。使用TextEdit打开纯文本文件(.txt)。点击左上方菜单栏中的格式下拉菜单。应该有一个名为“制作富文本”的按钮。当您单击它时,它应将所有文本格式设置为丰富。切换按钮使其变为纯文本。还将文件类型更改为.rtf。除非您使用Windows,否则它应该可以在最新的操作系统上使用。
答案 4 :(得分:0)
这是完全正常的功能:
它涵盖了所有特殊字符(不仅是波兰字符...。)
public static string ConvertToRtf(string text)
{
// using default template from wiki
StringBuilder sb = new StringBuilder(@"{\rtf1\ansi\ansicpg1250\deff0{\fonttbl\f0\fswiss Helvetica;}\f0\pard ");
foreach (char character in text)
{
if (character <= 0x7f)
{
// escaping rtf characters
switch (character)
{
case '\\':
case '{':
case '}':
sb.Append('\\');
break;
case '\r':
sb.Append("\\par");
break;
}
sb.Append(character);
}
// converting special characters
else
{
sb.Append("\\u" + Convert.ToUInt32(character) + "?");
}
}
sb.Append("}");
return sb.ToString();
}