最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#借助Free Spire.Doc for .NET實(shí)現(xiàn)將HTML轉(zhuǎn)換為RTF富文本格式

 更新時(shí)間:2025年11月25日 08:32:13   作者:Eiceblue  
在辦公自動(dòng)化、文檔導(dǎo)出、報(bào)表生成等場(chǎng)景中,HTML 與RTF格式的轉(zhuǎn)換是常見(jiàn)需求,本文將詳細(xì)講解如何使用該免費(fèi)庫(kù)通過(guò) C# 代碼實(shí)現(xiàn) HTML 到 RTF 的轉(zhuǎn)換,感興趣的小伙伴可以了解下

在辦公自動(dòng)化、文檔導(dǎo)出、報(bào)表生成等場(chǎng)景中,HTML 與RTF格式的轉(zhuǎn)換是常見(jiàn)需求。RTF(Rich Text Format)作為跨平臺(tái)的富文本格式,兼容Word、WPS等主流辦公軟件,而HTML則是網(wǎng)頁(yè)內(nèi)容的標(biāo)準(zhǔn)格式。Free Spire.Doc for .NET 是一款免費(fèi)高效的 .NET 文檔處理庫(kù),支持 HTML 到 RTF 的快速轉(zhuǎn)換,且無(wú)需依賴 Office 或其他第三方軟件。本文將詳細(xì)講解如何使用該免費(fèi)庫(kù)通過(guò) C# 代碼實(shí)現(xiàn) HTML 到 RTF 的轉(zhuǎn)換。

通過(guò)Nuget安裝 Free Spire.Doc:Install-Package FreeSpire.Doc

HTML→RTF核心轉(zhuǎn)換原理

Free Spire.Doc for .NET 實(shí)現(xiàn)HTML到RTF轉(zhuǎn)換的核心流程如下:

  • HTML解析:通過(guò)內(nèi)置的HTML解析引擎,解析HTML字符串/文件中的標(biāo)簽(如<p><font>、<table>)、屬性(如style、src)和內(nèi)容;
  • 樣式映射:將HTML的CSS樣式(內(nèi)聯(lián)樣式、<style>標(biāo)簽樣式)映射為RTF支持的富文本格式(字體、顏色、段落間距、表格邊框等);
  • 文檔構(gòu)建:創(chuàng)建Document對(duì)象(Free Spire.Doc的核心文檔模型),將解析后的HTML內(nèi)容轉(zhuǎn)化為文檔的Section、ParagraphTable等元素;
  • RTF導(dǎo)出:調(diào)用Document.SaveToFile()方法,指定保存格式為FileFormat.Rtf,生成RTF文件(或輸出為流)。

實(shí)戰(zhàn)示例(覆蓋多場(chǎng)景)

以下示例代碼均包含詳細(xì)注釋,可直接復(fù)制運(yùn)行。需先添加命名空間:

using System;
using System.IO;
using Spire.Doc;
using Spire.Doc.Documents;

示例1:基礎(chǔ)場(chǎng)景——HTML字符串轉(zhuǎn)RTF文件

適用于簡(jiǎn)單HTML內(nèi)容(無(wú)復(fù)雜樣式、圖片),快速實(shí)現(xiàn)轉(zhuǎn)換。

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // 1. 定義HTML字符串(簡(jiǎn)單文本+基礎(chǔ)樣式)
            string htmlContent = @"
                <html>
                    <body>
                        <h1 style='color: #2E86AB; font-size: 24px;'>HTML轉(zhuǎn)RTF基礎(chǔ)示例</h1>
                        <p style='font-family: 微軟雅黑; font-size: 14px; line-height: 1.5;'>
                            這是通過(guò)Free Spire.Doc轉(zhuǎn)換的RTF文檔,支持<b>粗體</b>、<i>斜體</i>、<u>下劃線</u>等格式。
                        </p>
                        <ul style='color: #A23B72;'>
                            <li>列表項(xiàng)1</li>
                            <li>列表項(xiàng)2</li>
                        </ul>
                    </body>
                </html>";

            // 2. 創(chuàng)建Document對(duì)象(Free Spire.Doc的核心文檔實(shí)例)
            Document doc = new Document();

            // 3. 添加一個(gè)文檔節(jié)(Section)和段落(Paragraph)
            Section section = doc.AddSection();
            Paragraph paragraph = section.AddParagraph();

            // 4. 將HTML內(nèi)容追加到段落中(關(guān)鍵方法:AppendHTML)
            paragraph.AppendHTML(htmlContent);

            // 5. 保存為RTF文件(指定格式為FileFormat.Rtf)
            string outputPath = @"D:\Output\BasicHtmlToRtf.rtf";
            doc.SaveToFile(outputPath, FileFormat.Rtf);

            Console.WriteLine($"RTF文件生成成功!路徑:{outputPath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"轉(zhuǎn)換失?。簕ex.Message}");
        }
    }
}

運(yùn)行效果:生成的RTF文件可在Word中打開(kāi),完美保留標(biāo)題顏色、字體、列表樣式及文本格式。

示例2:進(jìn)階場(chǎng)景——含圖片/表格的HTML轉(zhuǎn)換

實(shí)際開(kāi)發(fā)中,HTML常包含圖片(本地圖片、網(wǎng)絡(luò)圖片、Base64圖片)和表格,以下示例覆蓋這些場(chǎng)景。

含本地/網(wǎng)絡(luò)圖片的HTML轉(zhuǎn)換

class Program
{
    static void Main(string[] args)
    {
        Document doc = new Document();
        Section section = doc.AddSection();
        Paragraph paragraph = section.AddParagraph();

        // HTML內(nèi)容:包含本地圖片(絕對(duì)路徑)和網(wǎng)絡(luò)圖片
        string htmlWithImage = @"
        <html>
            <body>
                <h2>含圖片的HTML轉(zhuǎn)換</h2>
                <p>本地圖片:</p>
                <img src='C:\Users\Administrator\Pictures\test.png' width='300' height='200' alt='本地圖片'/>
                <p>網(wǎng)絡(luò)圖片:</p>
                <img src='https://picsum.photos/400/250' width='400' height='250' alt='網(wǎng)絡(luò)圖片'/>
            </body>
        </html>";


        // 追加HTML時(shí)指定導(dǎo)入選項(xiàng)
        paragraph.AppendHTML(htmlWithImage);

        // 保存RTF
        string outputPath = @"HtmlWithImage.rtf";
        doc.SaveToFile(outputPath, FileFormat.Rtf);
        Console.WriteLine($"含圖片的RTF生成成功:{outputPath}");
    }
}

含表格的HTML轉(zhuǎn)換

class Program
{
    static void Main(string[] args)
    {
        Document doc = new Document();
        Section section = doc.AddSection();
        Paragraph paragraph = section.AddParagraph();

        // HTML表格(帶邊框、合并單元格、樣式)
        string htmlWithTable = @"
        <html>
            <body>
                <h2>含表格的HTML轉(zhuǎn)換</h2>
                <table border='1' cellpadding='5' cellspacing='0' style='border-collapse: collapse; width: 80%;'>
                    <tr style='background-color: #E8F4FD;'>
                        <th>姓名</th>
                        <th>年齡</th>
                        <th>部門</th>
                    </tr>
                    <tr>
                        <td>張三</td>
                        <td>28</td>
                        <td rowspan='2'>研發(fā)部</td> <!-- 合并單元格 -->
                    </tr>
                    <tr>
                        <td>李四</td>
                        <td>32</td>
                    </tr>
                    <tr>
                        <td colspan='3' style='text-align: center;'>員工信息表</td> <!-- 合并單元格 -->
                    </tr>
                </table>
            </body>
        </html>";

        paragraph.AppendHTML(htmlWithTable);

        string outputPath = @"HtmlWithTable.rtf";
        doc.SaveToFile(outputPath, FileFormat.Rtf);
        Console.WriteLine($"含表格的RTF生成成功:{outputPath}");
    }
}

注意

  • 本地圖片需提供絕對(duì)路徑(或相對(duì)路徑,確保程序有權(quán)限訪問(wèn));
  • 網(wǎng)絡(luò)圖片需保證程序能訪問(wèn)外網(wǎng),若無(wú)法訪問(wèn)可先下載到本地再引用;
  • Free Spire.Doc 支持 JPG、PNG、GIF、BMP等常見(jiàn)圖片格式,Base64 圖片需確保編碼正確。

示例3:批量轉(zhuǎn)換——文件夾中所有HTML文件轉(zhuǎn)RTF

適用于需要批量處理多個(gè)HTML文件的場(chǎng)景(如批量導(dǎo)出報(bào)表)。

class Program
{
    static void Main()
    {
        // 僅需修改這兩個(gè)路徑(輸入HTML文件夾、輸出RTF文件夾)
        string inputFolder = @"D:\HTML文件";
        string outputFolder = @"D:\RTF輸出";

        try
        {
            // 檢查輸入文件夾,不存在則提示退出
            if (!Directory.Exists(inputFolder))
            {
                Console.WriteLine($"輸入文件夾不存在:{inputFolder}");
                return;
            }

            // 自動(dòng)創(chuàng)建輸出文件夾(不存在時(shí))
            if (!Directory.Exists(outputFolder))
            {
                Directory.CreateDirectory(outputFolder);
                Console.WriteLine($"已創(chuàng)建輸出文件夾:{outputFolder}");
            }

            // 獲取所有.html文件(不包含子文件夾)
            string[] htmlFiles = Directory.GetFiles(inputFolder, "*.html");

            if (htmlFiles.Length == 0)
            {
                Console.WriteLine("輸入文件夾中未找到HTML文件!");
                return;
            }

            Console.WriteLine($"找到{htmlFiles.Length}個(gè)HTML文件,開(kāi)始轉(zhuǎn)換...");

            // 批量轉(zhuǎn)換核心邏輯
            foreach (string htmlFile in htmlFiles)
            {
                string fileName = Path.GetFileName(htmlFile);
                try
                {
                    // 每個(gè)文件創(chuàng)建獨(dú)立Document實(shí)例(自動(dòng)釋放資源)
                    using (Document doc = new Document())
                    {
                        // 直接加載HTML(無(wú)額外配置)
                        doc.LoadFromFile(htmlFile, FileFormat.Html, XHTMLValidationType.None);

                        // 構(gòu)建輸出路徑(原文件名+(.rtf)后綴)
                        string rtfPath = Path.Combine(outputFolder, Path.ChangeExtension(fileName, ".rtf"));

                        // 直接保存為RTF(無(wú)額外配置)
                        doc.SaveToFile(rtfPath, FileFormat.Rtf);
                    }

                    Console.WriteLine($"? 成功:{fileName}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"? 失?。簕fileName} → 原因:{ex.Message}");
                }
            }

            Console.WriteLine("\n轉(zhuǎn)換完成!輸出路徑:" + outputFolder);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"程序異常:{ex.Message}");
        }
    }
}

注意事項(xiàng):免費(fèi)版有頁(yè)面限制,不適合大型文檔。

總結(jié)

Free Spire.Doc for .NET 提供了簡(jiǎn)單、高效的HTML到RTF轉(zhuǎn)換方案,無(wú)需依賴Office,支持文本、樣式、圖片、表格等核心元素的完整保留。通過(guò)本文的示例,開(kāi)發(fā)者可快速實(shí)現(xiàn)基礎(chǔ)轉(zhuǎn)換和批量轉(zhuǎn)換等場(chǎng)景需求。

整體而言,該組件是.NET平臺(tái)中文檔格式轉(zhuǎn)換的優(yōu)質(zhì)選擇,廣泛適用于辦公自動(dòng)化、報(bào)表系統(tǒng)、文檔導(dǎo)出等場(chǎng)景。

到此這篇關(guān)于C#借助Free Spire.Doc for .NET實(shí)現(xiàn)將HTML轉(zhuǎn)換為RTF富文本格式的文章就介紹到這了,更多相關(guān)C# HTML轉(zhuǎn)RTF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

华坪县| 茶陵县| 三江| 扎赉特旗| 太白县| 盱眙县| 巫山县| 澎湖县| 冷水江市| 佛教| 浦县| 纳雍县| 闻喜县| 江永县| 伊宁市| 西乌珠穆沁旗| 望谟县| 东兰县| 探索| 尼玛县| 清水县| 牟定县| 宜宾县| 新蔡县| 孟州市| 长岭县| 洪洞县| 庆阳市| 南华县| 海丰县| 大田县| 都安| 赤壁市| 铜山县| 日土县| 宝丰县| 客服| 北流市| 五台县| 淮滨县| 务川|