我有一个jquery Rich Textbox编辑器(http://jqueryte.com/),允许最终用户填写其内容以生成word文档报告。
流程如下:
用户填写内容 - >将Richtext框内容的HTML保存到数据库中。 - >从数据库中提取存储的HTML内容并将其转换为RTF字符串,以便在Microsoft Word中打开。
我尝试将HTML转换为RTF(一个可以接收我的HTML字符串并提供等效RTF字符串的函数)但是操作所有HTML标记变得过于复杂。我搜索了很多但是找不到任何解决方案(至少不是免费的解决方案)。
非常感谢任何帮助。
先谢谢。
答案 0 :(得分:0)
一种选择是使用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时,它会过滤掉所有不需要的代码。