我有一个jquery Rich Textbox编辑器(http://jqueryte.com/),它允许最终用户填写他们的内容以生成word文档报告。
该过程如下:
用户填写内容 --> 将富文本框内容的 HTML 保存到数据库中。 --> 从数据库中提取存储的 HTML 内容并将其转换为 RTF 字符串,以便在 Word Microsoft中打开。
我尝试将 HTML 转换为 RTF(一个将接收我的 HTML 字符串并给出等效 RTF 字符串的函数),但它变得太复杂了,无法操作所有 HTML 标签。我搜索了很多,但找不到任何问题(至少不是免费解决方案)。
任何帮助将不胜感激。
提前谢谢。
一种选择是使用MS Office Word Interop(尽管有些人不赞成)...
string html = "<html><head><style>p{margin:0}</style></head><body style="font-family:Arial;">" + value.Replace("<p> </p>", "<p><br></p>") + "</body></html>";
byte[] htmlBytes = Encoding.UTF8.GetBytes(html);
string htmlPath = Path.GetTempFileName() + ".html";
string rtfPath = htmlPath.Replace(".html", ".rtf");
FileStream fs = new FileStream(htmlPath, FileMode.Create, FileAccess.Write);
fs.Write(htmlBytes, 0, htmlBytes.Length);
fs.Close();
Application word = new Application();
Document doc = word.Documents.Open(htmlPath);
doc.SaveAs(rtfPath, WdSaveFormat.wdFormatRTF);
doc.Close();
word.Quit();
fs = new FileStream(rtfPath, FileMode.Open, FileAccess.Read);
byte[] rtfBytes = new byte[fs.Length];
fs.Read(rtfBytes, 0, rtfBytes.Length);
fs.Close();
string rtf = Encoding.ASCII.GetString(rtfBytes);
Thread thread = new Thread(() =>
{
RichTextBox rtb = new RichTextBox();
rtb.Rtf = rtf;
rtf = rtb.Rtf;
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
return rtf;
我使用RichTextBox和Word的原因是Word的RTF文件非常庞大......当Word的RTF数据被输入到RichTextBox时,它会过滤掉所有不需要的代码。