在开发中,将 HTML 内容转换为 RTF 格式是常见需求 - HTML 擅长网页展示,而 RTF 则适用于 Word 等工具中的编辑与共享。对于.NET 开发者,借助 Spire.Doc 库可大幅简化这一过程。本文将介绍如何用 C# 实现 HTML 到 RTF 的高效转换、涵盖基础转换示例及进阶转换场景(如处理HTML图像、批量转换)。
为什么选择 Spire.Doc 转换 HTML 到 RTF?
Spire.Doc for .NET是一款轻量级、功能丰富的类库,可在.NET应用程序(支持.NET Framework、.NET Core及.NET 5+)中创建、编辑和转换 Word 及 RTF 文档。其核心优势如下:
- 格式高保真:完整保留 HTML 中的字体、链接、列表、表格等样式;
- 多源支持:可直接加载 HTML 字符串(如 API 返回、数据库内容)或本地 HTML 文件;
- 无依赖:无需安装 Microsoft Word 或其他第三方软件;
- 易用性强:API 设计直观,几行代码即可完成转换。
环境配置
1. 创建 C# 项目
在 Visual Studio 中创建控制台应用(.NET Framework/.NET Core 均可),代码同样适用于 WinForms、WPF 或ASP.NET项目。
2. 安装 Spire.Doc
通过 NuGet 快速集成:
- 图形界面:右键项目→「管理 NuGet 包」→搜索「Spire.Doc」→点击「安装」;
- 命令行:在 NuGet 包管理器控制台输入:
Install-Package Spire.Doc
将 HTML 转换为 RTF(C# 代码示例)
Spire.Doc 提供的 Document 类负责 HTML 加载和 RTF 保存,以下为两种典型场景的实现:
场景1:C# 将 HTML 字符串转换为 RTF
适用于动态 HTML 内容(如用户输入、数据库读取):
using Spire.Doc;
using Spire.Doc.Documents;
namespace HtmlToRtfConverter
{
class Program
{
static void Main(string[] args)
{
// 创建 Document 对象
Document doc = new Document();
// 定义 HTML 内容
string htmlString = @"
<html>
<body>
<h1 style='color: #00BFFF; font-family: Arial'>HTML 到 RTF 的转换</h1>
<p>这是一个包含<b>粗体段落</b>和<a href='https://www.e-iceblue.com'>链接</a>的示例。</p>
<ul>
<li>项目1 </li>
<li>项目2</li>
</ul>
<table border='1' cellpadding='5'>
<tr><td>姓名</td><td>性别</td><td>年龄</td></tr>
<tr><td>张某</td><td>男</td><td>30</td></tr>
<tr><td>李某</td><td>女</td><td>26</td></tr>
</table>
</body>
</html>";
// 在 Word 中添加一个段落
Paragraph para = doc.AddSection().AddParagraph();
// 将 HTML 字符串添加到段落中
para.AppendHTML(htmlString);
// 将文档保存为 RTF
doc.SaveToFile("HTML字符串转RTF.rtf", FileFormat.Rtf);
doc.Dispose();
}
}
}
核心说明:
- Document:代表一个空文档;
- AppendHTML():解析 HTML 标签(如
<h1>
、<table>
、<a>
)并插入到段落中; - SaveToFile():指定输出格式为FileFormat.Rtf,完成转换。
转换效果: 生成的 RTF 文件将完整保留 HTML 中的标题样式、文本格式、链接及表格结构。
SaveToFile 方法接受不同的 FileFormat 参数,通过修改该参数即可实现在 C# 中将 HTML 转换为 Word。
场景2:C# 将 HTML 文件转换为 RTF 文件
适用于静态 HTML 文件(如本地模板、保存的网页):
using Spire.Doc;
namespace ConvertHtmlToRTF
{
class Program
{
static void Main()
{
// 创建Document对象
Document doc = new Document();
// 加载HTML文件
doc.LoadFromFile("E:\\sample.html", FileFormat.Html);
// 将HTML文件保存为rtf格式
doc.SaveToFile("HTML转RTF.rtf", FileFormat.Rtf);
doc.Dispose();
}
}
}
核心步骤:
- 创建Document对象;
- 用 LoadFromFile() 加载 HTML 文件,指定格式为 FileFormat.Html;
- 调用 SaveToFile() 输出为 RTF 格式。
转换效果:
扩展链接: Spire.Doc 也支持通过 C# 将 RTF 文件转换回 HTML 格式。
进阶转换场景
1. 处理 HTML 中的图像
Spire.Doc 支持保留 HTML 中的图像(本地 / 远程):
- 本地图片:确保
<img>
标签的 src 路径正确(如src="images/logo.png"
); - 网页图片:自动下载并嵌入 RTF,无需额外处理。
// 包含本地和远程图像的 HTML 内容
string htmlWithImages = @"<html>
<body>
<h3>包含图片的 HTML</h3>
<p>本地图片:<img src='C:\Users\Administrator\Desktop\HelloWorld.png' alt='示例图像' width='200'></p>
<p>网页图片:<img src='https://www.e-iceblue.com/images/art_images/csharp-html-to-rtf.png' alt='在线图像'></p>
</body>
</html>";
// 将 HTML 字符串添加到段落
Paragraph para = doc.AddSection().AddParagraph();
para.AppendHTML(htmlWithImages);
// 将文档保存为 RTF
doc.SaveToFile("HtmlWithImage.rtf", FileFormat.Rtf);
2. 批量转换多个 HTML 文件
通过循环处理目录中所有 HTML 文件,高效完成批量转换:
string inputDir = @"C:\Input\HtmlFiles";
string outputDir = @"C:\Output\RtfFiles";
// 若输出目录不存在则创建
Directory.CreateDirectory(outputDir);
// 获取输入目录中所有.html文件
foreach (string htmlFile in Directory.EnumerateFiles(inputDir, "*.html"))
{
using (Document doc = new Document())
{
doc.LoadFromFile(htmlFile, FileFormat.Html, XHTMLValidationType.None);
// 使用相同文件名,扩展名改为.rtf
string fileName = Path.GetFileNameWithoutExtension(htmlFile) + ".rtf";
string outputPath = Path.Combine(outputDir, fileName);
doc.SaveToFile(outputPath, FileFormat.Rtf);
总结
借助 Spire.Doc for .NET,C# 开发者可轻松实现 HTML 到 RTF 的转换,且能保证格式一致性,该库省去了手动解析的麻烦。无无论是动态 HTML 字符串还是静态文件,均能通过简洁的 API 快速处理。如需扩展功能,可参考 Spire.Doc 教程合集。
常见问题
问题1:Spire.Doc 是否免费?
答:可申请30 天免费试用许可证,体验完整功能。此外 Spire.Doc 也提供免费社区版(无水印,有页面和功能限制)。
问题2:转换后会保留 HTML 超链接、图像和表格等元素吗?
答:会的。Spire.Doc 能保留大多数 HTML 元素:
- 超链接:
<a>
标签会转为RTF中的可点击链接; - 图片:本地(
<img src="路径">
)和远程(<img src="URL">
)图像会嵌入到RTF中; - 表格:带边框等属性的 HTML 表格会转为 RTF 表格,并保留结构。
问题3:转换时能设置 RTF 输出的样式吗?
答:可以。将 HTML 内容加载到 Document 对象后,可在保存为 RTF 前,通过 Spire.Doc 提供的各 API 对文档进行修改。
问题4:支持转换为其他格式吗?
答:除转换为 RTF 外,该库还支持将 HTML 转换为 Word、HTML 转 PDF 以及 HTML 转图片等格式。