使用 C# 将 RTF 文档转换为 PDF 格式

RTF(Rich Text Format)作为跨平台富文本格式,常用于文档编辑与数据交换,而 PDF 因格式稳定、跨设备兼容性强,更适合文档分发和归档。在 .NET 开发中,实现 RTF 到 PDF 的转换是常见需求,本文将介绍如何使用免费库 Free Spire.Doc for .NET 实现该转换过程。

安装: Free Spire.Doc 是一款支持 RTF、Word 等文档的格式转换的免费 .NET 库 (有篇幅限制),可直接通过 NuGet 包管理器安装:

bash 复制代码
Install-Package FreeSpire.Doc

RTF 转 PDF 核心实现代码

场景1:单个RTF文件转换为PDF(基础版)

核心逻辑为"加载RTF文件 → 保存为PDF格式",代码简洁易实现:

csharp 复制代码
using System;
using Spire.Doc;

namespace RtfToPdfConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 初始化Document对象
                Document document = new Document();

                // 加载本地RTF文件(替换为实际文件路径)
                string rtfFilePath = @"C:\Files\test.rtf";
                document.LoadFromFile(rtfFilePath, FileFormat.Rtf);

                // 保存为PDF文件(替换为输出路径)
                string pdfFilePath = @"C:\Files\test.pdf";
                document.SaveToFile(pdfFilePath, FileFormat.Pdf);

                // 释放资源
                document.Close();

                Console.WriteLine("RTF转PDF成功!输出路径:" + pdfFilePath);
            }
            catch (Exception ex)
            {
                Console.WriteLine("转换失败:" + ex.Message);
            }
        }
    }
}

场景2:批量转换RTF文件(进阶版)

针对多文件转换场景,可遍历指定目录下的RTF文件批量处理:

csharp 复制代码
using System;
using System.IO;
using Spire.Doc;

namespace BatchRtfToPdfConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 源RTF文件目录、PDF输出目录(替换为实际路径)
            string sourceDir = @"C:\Files\RTF_Source";
            string outputDir = @"C:\Files\PDF_Output";

            // 检查并创建输出目录
            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            try
            {
                // 获取目录下所有RTF文件
                string[] rtfFiles = Directory.GetFiles(sourceDir, "*.rtf");
                if (rtfFiles.Length == 0)
                {
                    Console.WriteLine("源目录下未找到RTF文件!");
                    return;
                }

                // 批量转换
                int successCount = 0;
                foreach (string rtfFile in rtfFiles)
                {
                    try
                    {
                        Document document = new Document();
                        document.LoadFromFile(rtfFile, FileFormat.Rtf);

                        // 生成同名PDF文件
                        string fileName = Path.GetFileNameWithoutExtension(rtfFile);
                        string pdfFile = Path.Combine(outputDir, $"{fileName}.pdf");

                        document.SaveToFile(pdfFile, FileFormat.Pdf);
                        document.Close();

                        successCount++;
                        Console.WriteLine($"成功转换:{rtfFile} → {pdfFile}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"转换失败 {rtfFile}:{ex.Message}");
                    }
                }

                Console.WriteLine($"\n批量转换完成!成功:{successCount} 个,失败:{rtfFiles.Length - successCount} 个");
            }
            catch (Exception ex)
            {
                Console.WriteLine("批量转换异常:" + ex.Message);
            }
        }
    }
}

常见问题与解决方案

问题1:加载 RTF 文件时报错
  • 可能原因:文件路径错误/文件损坏
  • 解决方案:检查路径正确性,验证 RTF 文件可正常打开
转换后 PDF 格式错乱
  • 可能原因:RTF 含特殊格式/字体
  • 解决方案:确保运行环境安装了 RTF 中使用的字体

Free Spire.Doc for .NET 为 RTF 到 PDF 的转换提供了可行的免费解决方案,适合文档规模较小、基础转换场景。

相关推荐
昵称暂无114 分钟前
.NET 高级开发 | i18n 原理、实现一个 i18n 框架
javascript·c#·.net
疯狂成瘾者1 小时前
Chroma向量数据库
开发语言·数据库·c#
我是唐青枫1 小时前
C#.NET Monitor 与 Mutex 深入解析:进程内同步、跨进程互斥与使用边界
开发语言·c#·.net
ou.cs1 小时前
c# 信号量和锁的区别
开发语言·c#
yugi9878381 小时前
C# 串口下载烧写BIN文件工具
开发语言·c#
其实秋天的枫2 小时前
2026年新大纲普通话考试真题题库50套(PDF电子版)
经验分享·pdf
"菠萝"3 小时前
C#知识学习-021(文字关键字)
开发语言·学习·c#
游乐码3 小时前
c#HashTable
开发语言·c#
游乐码3 小时前
C#Queue
数据结构·游戏·c#
昵称暂无14 小时前
通过 C# 复制 Word 文档、指定段落、指定节
开发语言·c#·word