博客 / 詳情

返回

使用 C# 實現 RTF 文檔轉 PDF 格式

RTF(Rich Text Format)作為跨平台富文本格式,常用於文檔編輯與數據交換,而 PDF 因格式穩定、跨設備兼容性強,更適合文檔分發和歸檔。在 .NET 開發中,實現 RTF 到 PDF 的轉換是常見需求,本文將介紹如何使用免費庫 Free Spire.Doc for .NET 實現該轉換過程。

安裝: Free Spire.Doc 是一款支持 RTF、Word 等文檔的格式轉換的免費 .NET 庫 (有篇幅限制),可直接通過 NuGet 包管理器安裝:

Install-Package FreeSpire.Doc

RTF 轉 PDF 核心實現代碼

場景1:單個RTF文件轉換為PDF(基礎版)

核心邏輯為“加載RTF文件 → 保存為PDF格式”,代碼簡潔易實現:

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文件批量處理:

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 的轉換提供了可行的免費解決方案,適合文檔規模較小、基礎轉換場景。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.