如何在 Delphi 中将带有图像的 RichText (RTF) 文档转换为 HTML?

How to convert RichText (RTF) document with images into HTML in Delphi?

我一直在努力寻找一个免费的(最好是开源的)组件或库,它允许将带有嵌入图像的 RTF 文件转换为 HTML 文件和图像文件或更好的 HTML 和图像流。

无论是 DLL 库还是 Delphi 组件,完美的解决方案都允许使用回调将数据流式传输到 IStream/TStream,因此我将能够将图像转换并保存为选择的格式,返回图像文件相对名称用于将 RTF 解析器包含在生成的 HTML 文件中,但按原样保存也很好,尤其是在代码开源时。

我遇到过商业解决方案,但我很难考虑它们,因为(相对)简单地将一种文档类型转换为另一种文档类型的价格非常高,而且这两种格式都有 20 年的历史,这表明必须有现有的库(本地、未管理)进行此类转换。

如果我找不到解决方案,我可能会将此代码转换为 Delphi dll 并使其可用,但也许有人已经这样做了?

编辑:

我们决定使用前面提到的 .Net RtfConverter 编译为 DLL,从中生成 Delphi TLB 单元并强制客户安装 .Net 框架(嵌入在安装程序中)。现在转换就像一种魅力,另一个迹象表明是时候从 Delphi 转到 .Net...


用于将 RTF 转换为 HTML 4.01 / HTML5 和将 RTF 转换为各种 XHTML 风格的商业转换器是用于 Delphi 的 ScroogeXHTML。 5.0 版包括改进的图片支持,以及 WMF 到 PNG 转换的示例代码。 (我是这个组件的开发者,也是 Java 平台对应的组件)。


如果您可以使用 microsoft office 打开 RTF 然后在后台将其另存为 HTML,那么我相信这是您最好的解决方案,只需使用 OLE 在后台启动 Microsoft Word 实例,加载 RTF 然后导出它作为 HTML...


P.S:我是这个产品的开发者。

这是一个将 RTF 转换为 HTML 3.2、4.01、XHTML 1.01 和 HTML 5 的商业 .Net 库。它

支持转换表格和嵌套表格、有序列表和项目符号列表、嵌入 HTML、Unicode、特殊 HTML 符号等的图像。

这是 C# 中的示例代码:

1
2
3
4
        SautinSoft.RtfToHtml r = new SautinSoft.RtfToHtml();
        r.OutputFormat = SautinSoft.RtfToHtml.eOutputFormat.HTML_5;
        r.ImageStyle.IncludeImageInHtml = true;
        r.ConvertFile(@"d:\\document.rtf",@"d:\\html5.htm");