我有一堆文本文件,我想轉換爲rtf。只是更改代碼中的擴展名不起作用,底層文件是相同的。我需要的文本是rtf格式。任何人都知道我可以做到這一點?轉換TXT到RTF
問題是,當我加載一個純文本文件時,RichTextBox沒有格式化新行,因此它將它作爲一個連續的文本塊加載,而不是插入新行。
唯一的解決方法是打開純文本文件和「另存爲」rtf。
我有一堆文本文件,我想轉換爲rtf。只是更改代碼中的擴展名不起作用,底層文件是相同的。我需要的文本是rtf格式。任何人都知道我可以做到這一點?轉換TXT到RTF
問題是,當我加載一個純文本文件時,RichTextBox沒有格式化新行,因此它將它作爲一個連續的文本塊加載,而不是插入新行。
唯一的解決方法是打開純文本文件和「另存爲」rtf。
只需添加文本空RTF模板,純文本沒有任何格式化,無論如何,讓我們說,RTF模板看起來像這樣(從維基百科爲例):
{\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;
}
您還需要避免使用大括號和反斜槓。 –
@DourHighArch權利,謝謝,更新我的答案 –
安東尼奧的改進方法(請注意,我定義的代碼頁\ 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");
}
加載到RichTextBox中,然後保存爲RTF –
'的問題是,當我加載了一個純文本文件在RichTextBox沒有格式化你的新lines'可以嘗試在加載到richtextbox之前用'\ r \ n'(或用\ r \ n'代替'\ r') –
我將更新我的答案 –