如何在 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 规范并不简单,转换也不像看起来那么简单。实际的 RTF 文档比带有一些粗体和斜体的简短文本片段更复杂。考虑 Unicode 和本地化以及多种字体和 CSS 以及页眉和页脚以及段落格式以及表格和嵌套表格等。除了一些将 RTF 转换为 HTML 的商业软件工具之外,并非所有的商业软件工具都物有所值。我还没有写过一个,但我用过一个,它的价格是 499 美元,现在可以在托管代码版本(100% C#)中使用。
  • 对于这种转换,也许简单不是正确的描述,但是 RTF 标记列表非常有限,Windows 和 Delphi 都有处理国际字符的工具。我也考虑使用转义 < 和 > 字符的 unicode 格式保存 HTML 文件。我在问题中提到的库是托管 C# 代码中的一个工作解决方案,我试图避免使用它来保持应用程序依赖关系尽可能低。
  • 商业 RTF 到 HTML 转换器的起价约为 130 美元(无版税) - 包括完整的 Delphi 源代码
  • mjn:您想发布对这个商业 Delphi 转换器的参考吗?如果没有免费的开源 Delphi/C 转换器,并且将 codeproject.com/KB/recipes/RtfConverter.aspx 转换为 Delphi 会出现问题,我肯定会考虑将其作为最后的手段。

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

相关讨论

  • 谢谢你的链接。我将等待更长的时间来寻找可能的免费解决方案,因为它看起来很有希望。你有任何计划包括表格/列表支持吗?
  • 支持简单的编号和未编号列表,但表格不太适合内部中间文档表示,需要重新设计(但正在考虑中)

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

相关讨论

  • 不幸的是,这需要在机器上安装价值几百美元/英镑/……的商业产品。
  • 我对此表示同意 110%,但是大多数用户倾向于安装 Office,因此如果您的目标是特定客户并且他拥有 Office 套件,那么我建议您使用此功能,否则您将不得不进行更多搜索并自行实施。 ..
  • @PA取决于toos的截止日期和其他东西,你可以称之为"两个问题"或(永久/临时)"胜利"
  • 我可能假设客户已经安装了 Office 套件,以实现对 Office 的这种转换依赖,不管保证的兼容性和转换质量(如果您可以将 Word 生成的 HTML 视为兼容且质量好)可能被视为不必要的复杂性,并且可能被视为替代本机代码转换器应该在两种格式存在 2 年之后才存在。它也可能是 RTF -> DOC -> HTML 路径,因为 DOC 更受欢迎。
  • @too 你可能也想看看 Open Office 套装,它可能有一些 *.DLLs 可以进行转换

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");

相关讨论

  • 链接坏了。自 2012 年以来,作者一直没有上过 SO。这个答案应该被删除。

以上是如何在 Delphi 中将带有图像的 RichText (RTF) 文档转换为 HTML?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>