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

C#使用Spire.Doc for .NET獲取并替換Word文檔中的字體

 更新時(shí)間:2026年03月10日 10:03:54   作者:缺點(diǎn)內(nèi)向  
在企業(yè)文檔處理流程中,C# Word 字體替換需求頻繁出現(xiàn),手動(dòng)查找并替換 Word 文檔字體,不僅耗費(fèi)時(shí)間,還易遺漏,Spire.Doc for .NET 作為專業(yè)庫(kù),提供查找并替換字體功能,支持自動(dòng)化批量操作,本文基于 Spire.Doc,分享精確 C# 代碼,實(shí)現(xiàn)字體標(biāo)準(zhǔn)化,需要的朋友可以參考下

在企業(yè)文檔處理流程中,C# Word 字體替換需求頻繁出現(xiàn)。手動(dòng)查找并替換 Word 文檔字體,不僅耗費(fèi)時(shí)間,還易遺漏,尤其跨平臺(tái)共享時(shí),字體缺失常導(dǎo)致顯示亂碼或布局偏移。Spire.Doc for .NET 作為專業(yè)庫(kù),提供查找并替換字體功能,支持自動(dòng)化批量操作。本文基于 Spire.Doc,分享精確 C# 代碼,實(shí)現(xiàn)字體標(biāo)準(zhǔn)化。

Word 文檔字體管理的原理

Word 文檔(.docx)以 XML 格式存儲(chǔ)字體信息,主要通過(guò) CharacterFormat 類定義每個(gè) TextRange 的字體屬性,包括 FontName、FontSizeFontStyle。文檔加載時(shí),若系統(tǒng)缺少指定字體,默認(rèn)替換為“Calibri”或“Times New Roman”,但這無(wú)法滿足企業(yè)統(tǒng)一規(guī)范。

常見(jiàn)痛點(diǎn):

  • 嵌入字體缺失:Windows “微軟雅黑” 在 Mac 上變“Helvetica”,影響專業(yè)性。
  • 多語(yǔ)言兼容:2024 Word 更新增強(qiáng) Unicode 支持,但跨系統(tǒng)仍需替換為通用字體。
  • 批量場(chǎng)景:數(shù)千文檔標(biāo)準(zhǔn)化,手動(dòng)操作效率低下。

Spire.Doc 通過(guò)遍歷文檔結(jié)構(gòu),實(shí)現(xiàn)精確字體掃描與替換,處理速度達(dá)手動(dòng) 20 倍。

使用 Spire.Doc for .NET 獲取文檔字體

Spire.Doc 的 GetAllFonts() 方法可一鍵獲取文檔所有字體。安裝 NuGet 包 Install-Package Spire.Doc 后,使用以下 C# 代碼:

using Spire.Doc;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.docx");
        List<string> fonts = new List<string>(doc.GetAllFonts());
        
        Console.WriteLine("文檔字體列表:");
        foreach (string font in fonts)
        {
            Console.WriteLine($"- {font}");
        }
        doc.Close();
    }
}

關(guān)鍵 API 表格

API描述返回類型
GetAllFonts()獲取唯一字體集合IEnumerable<string>
CharacterFormat.FontName文本范圍字體名string

輸出示例

文檔字體列表:
- 微軟雅黑
- Arial
- Times New Roman

此步驟用于預(yù)分析,確定替換目標(biāo)。

實(shí)現(xiàn) C# Word font replacement 功能

核心邏輯:遍歷段落 Paragraph 和文本范圍 TextRange,條件替換 FontName。完整代碼如下,支持批量與條件替換:

using Spire.Doc;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.docx");
        
        foreach (Section section in doc.Sections)
        {
            foreach (Paragraph para in section.Paragraphs)
            {
                foreach (DocumentObject obj in para.ChildObjects)
                {
                    if (obj.DocumentObjectType == DocumentObjectType.TextRange)
                    {
                        TextRange tr = obj as TextRange;
                        if (tr.CharacterFormat.FontName == "微軟雅黑")
                        {
                            tr.CharacterFormat.FontName = "宋體";
                            tr.CharacterFormat.FontSize = 12f;
                        }
                    }
                }
            }
        }
        
        doc.DefaultSubstitutionFontName = "Arial"; // 缺失字體默認(rèn)替換
        doc.SaveToFile("output.docx", FileFormat.Docx2019);
        doc.Close();
    }
}

效率對(duì)比表格

操作方式100 頁(yè)文檔時(shí)間準(zhǔn)確率
手動(dòng)替換25 分鐘90%
Spire.Doc 自動(dòng)化2 秒100%

高級(jí)用法:結(jié)合 SetCustomFonts() 嵌入自定義字體包,確保跨平臺(tái)一致。

最佳實(shí)踐與注意事項(xiàng)

  1. 性能優(yōu)化:超大文檔分節(jié)處理,避免內(nèi)存溢出;使用 doc.ClearCustomFonts() 釋放資源。
  2. 異常處理:
try { /* 加載與處理 */ }
catch (Exception ex) { Console.WriteLine(ex.Message); }
  1. 兼容性:支持 Word 365 格式,測(cè)試多語(yǔ)言文檔時(shí)優(yōu)先 “SimSun” (宋體)。
  2. 字體嵌入:替換后保存為 Docx2019,確保字體隨文檔攜帶。

總結(jié)

Spire.Doc for .NET 簡(jiǎn)化了 C# Word 字體替換的步驟,實(shí)現(xiàn)高效查找和替換字體。開(kāi)發(fā)者可據(jù)此標(biāo)準(zhǔn)化文檔,提升跨平臺(tái)兼容。你可以先先下載 Spire.Doc 免費(fèi)試用版,運(yùn)行本文代碼,驗(yàn)證自動(dòng)化字體管理。

到此這篇關(guān)于C#使用Spire.Doc for .NET獲取并替換Word文檔中的字體的文章就介紹到這了,更多相關(guān)C#獲取并替換Word字體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例

    C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例

    這篇文章主要介紹了C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 用 C# Winform做出全透明的磨砂玻璃窗體效果代碼

    用 C# Winform做出全透明的磨砂玻璃窗體效果代碼

    就是一個(gè)簡(jiǎn)單的例子, 調(diào)用系統(tǒng)的 dwm 去重繪窗口. 只能在 Vista 和 7 之后才可以, 并且要確保已經(jīng)開(kāi)啟主題服務(wù)等等, 總之不是非常實(shí)用, 好玩而已
    2011-05-05
  • C#使用windows服務(wù)發(fā)送郵件

    C#使用windows服務(wù)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了C#使用windows服務(wù)發(fā)送郵件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#游戲開(kāi)發(fā)之實(shí)現(xiàn)俄羅斯方塊游戲

    C#游戲開(kāi)發(fā)之實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)經(jīng)典俄羅斯方塊游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • c# Base關(guān)鍵字的使用

    c# Base關(guān)鍵字的使用

    c# Base關(guān)鍵字的使用示例代碼,大家可以參考下用法。
    2009-07-07
  • C# xmlSerializer簡(jiǎn)單用法示例

    C# xmlSerializer簡(jiǎn)單用法示例

    這篇文章主要介紹了C# xmlSerializer簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了C#基于xmlSerializer操作xml的讀取、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Unity中使用反射機(jī)制調(diào)用函數(shù)

    Unity中使用反射機(jī)制調(diào)用函數(shù)

    這篇文章主要為大家詳細(xì)介紹了Unity中使用反射機(jī)制調(diào)用函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 詳解C#中==、Equals、ReferenceEquals的區(qū)別

    詳解C#中==、Equals、ReferenceEquals的區(qū)別

    C#中Equals , == , ReferenceEquals都可以用于判斷兩個(gè)對(duì)象的個(gè)體是不是相等,本篇文章詳解C#中Equals , == , ReferenceEquals都可以用于判斷兩個(gè)對(duì)象的個(gè)體是不是相等,有興趣的可以了解一下。
    2016-12-12
  • C#?HttpClient超時(shí)重試機(jī)制詳解

    C#?HttpClient超時(shí)重試機(jī)制詳解

    超時(shí)重試的實(shí)現(xiàn)方式可以使用循環(huán)結(jié)構(gòu),在請(qǐng)求發(fā)起后等待一定時(shí)間,若超時(shí)未收到響應(yīng),則再次發(fā)起請(qǐng)求,循環(huán)次數(shù)可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,一般建議不超過(guò)三次,這篇文章主要介紹了C#?HttpClient超時(shí)重試,需要的朋友可以參考下
    2023-06-06
  • 使用C#對(duì)JSON進(jìn)行序列化和反序列化處理的兩種方法

    使用C#對(duì)JSON進(jìn)行序列化和反序列化處理的兩種方法

    本指南探討了如何使用 C# 編程語(yǔ)言進(jìn)行 JSON 序列化和反序列化,我們將介紹 .NET 生態(tài)系統(tǒng)中可用的兩個(gè)本機(jī)選項(xiàng),即命名空間和廣泛使用的 Newtonsoft.Json 庫(kù)(也稱為 Json.NET),需要的朋友可以參考下
    2024-06-06

最新評(píng)論

韶关市| 盐池县| 宜君县| 南和县| 孝昌县| 合肥市| 汤阴县| 重庆市| 鄂伦春自治旗| 肥乡县| 和政县| 子长县| 竹溪县| 苍溪县| 华安县| 上虞市| 抚顺县| 黄梅县| 长岛县| 水城县| 新郑市| 县级市| 太谷县| 岳西县| 霍林郭勒市| 绥棱县| 台中县| 成安县| 衡南县| 绥化市| 碌曲县| 马鞍山市| 双辽市| 饶阳县| 门头沟区| 六盘水市| 定边县| 陆川县| 毕节市| 长沙市| 富锦市|