我们有一个水晶报告,我们需要以电子邮件的形式发送出去,但是从水晶报告生成的 HTML 非常丑陋,并且会导致一些电子邮件客户端出现问题。如果可能的话,我想将其导出为富文本并将其转换为 HTML。
有什么建议么?
我会在 CodeProject RTFConverter 上查看这个工具。这个人对程序如何工作以及转换的细节进行了很好的分解。
Mike Stall 在这里发布了他用 c# 编写的代码:
http://blogs.msdn.com/jmstall/archive/2006/10/20/rtf_5F00_html.aspx
在 MSDN 代码示例库中还有一个示例,称为在 RTF 和 HTML 之间转换,它允许您在 HTML、RTF 和 XAML 之间进行转换。
我回到家并尝试了以下代码,但它不起作用。对于任何想知道的人,剪贴板不只是像我希望的那样神奇地转换东西。相反,它允许应用程序以各种粘贴格式“上传”数据对象,然后粘贴(在我的比喻中是“下载”)程序被粘贴到指定其首选格式。我个人最终使用了之前推荐过的这段代码,它非常易于使用且非常有效。导入代码(在 VStudio 中,项目 -> 添加现有文件)后,您只需像这样将 html 转到 rtf:
return HtmlToRtfConverter.ConvertHtmlToRtf(myRtfString);
或相反的方向:
return RtfToHtmlConverter.ConvertHtmlToRtf(myHtmlString);
大多数(如果不是全部)上述答案都为手头的问题提供了全面的、通常基于库的解决方案。我远离我的电脑,因此无法测试这个想法,但一种替代的、廉价的、模糊的 hack-y 方法如下。
private string HTMLFromRtf(string rtfString)
{
Clipboard.SetData(DataFormats.Rtf, rtfString);
return Clipboard.GetData(DataFormats.Html);
}
同样,不完全确定这是否可行,但只是在我的 iPhone 上弄乱一些 html 我怀疑它会。文档在这里。更深入的解释/文档 RE 可以在此处找到剪贴板中数据模型的获取和设置。
(是的,我完全知道我多年后才来到这里,但我认为这个问题仍然是一些人想要回答的问题)。
如果您不介意自己动手,编写一个 RTF 到 HTML 转换器并不难。
编写一个通用的 RTF->HTML 转换器会有些复杂,因为您需要处理数百个 RTF 动词。但是,在您的情况下,您只处理 Crystal Reports 专门使用的那些动词。我敢打赌,Crystal 生成的标准 RTF 编码不会因报告而异。
我用 C++ 编写了一个 RTF 到 HTML 转换器,但它只处理基本格式,如字体、段落对齐等。我的翻译器基本上去除了它不准备处理的任何特殊格式。它花了大约 400 行 C++。它基本上扫描文本中的 RTF 标记并用等效的 HTML 标记替换它们。不在我列表中的 RTF 标签会被简单地删除。编写这样的转换器时,正则表达式函数非常有用。
我认为您可以使用 .NET 办公可编程性支持和 Visual Studio 办公工具将其加载到 Word 文档对象中。
然后使用文档实例重新保存为 HTML 文档。
我不知道怎么做,但我相信在没有任何第三方库的情况下完全在 .NET 中是可能的。
我不知道有任何库可以做到这一点(但我相信有很多库可以)但是如果您已经可以从水晶报告创建 HTML,为什么不使用 XSLT 来清理标记呢?
您可以尝试将其上传到谷歌文档,并将其下载为 HTML。