首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 使用 Spire.Doc 從 Word 文檔批量提取圖片完整教程

     編輯:關於C語言

前言

Word 文檔中最常見的元素莫過於文字與圖片。若僅需提取少量圖片,在 Word 中右鍵選擇「另存為圖片」即可;但面對大量文檔或自動化處理需求時,程式化提取才是正解。本文將示範如何使用 C# 搭配 Spire.Doc for .NET 免費版元件,快速遍歷文檔並將所有內嵌圖片匯出為 PNG 檔案。

準備工作

  1. 建立一個 Visual C# 控制台專案。
  2. 透過 NuGet 安裝 Spire.Doc 套件(或手動參考 DLL)。
  3. 準備一份包含文字與圖片的測試文檔(本文範例命名為 法國景點.docx)。

測試文檔預覽

核心命名空間

using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing; // 儲存圖片時需用到 ImageFormat

分步實作

步驟 1:載入文檔

Document document = new Document("法國景點.docx");

步驟 2:遞迴遍歷 Section → Paragraph → ChildObjects

Word 文檔結構為 Document → Sections → Paragraphs → ChildObjects,圖片在物件模型中表現為 DocPicture 型別。

int index = 0;

foreach (Section section in document.Sections)
{
    foreach (Paragraph paragraph in section.Paragraphs)
    {
        foreach (DocumentObject docObject in paragraph.ChildObjects)
        {
            // 判斷是否為圖片
            if (docObject.DocumentObjectType == DocumentObjectType.Picture)
            {
                DocPicture picture = docObject as DocPicture;
                
                // 以索引命名,統一輸出為 PNG
                string imageName = string.Format(@"images\Image-{0}.png", index);
                picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
                
                index++;
            }
        }
    }
}

步驟 3:完整可執行程式碼

using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace ExtractImageFromWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 載入文檔
            Document document = new Document("法國景點.docx");
            int index = 0;

            // 2. 遍歷並提取
            foreach (Section section in document.Sections)
            {
                foreach (Paragraph paragraph in section.Paragraphs)
                {
                    foreach (DocumentObject docObject in paragraph.ChildObjects)
                    {
                        if (docObject.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            DocPicture picture = docObject as DocPicture;
                            string imageName = string.Format(@"images\Image-{0}.png", index);
                            picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
                            index++;
                        }
                    }
                }
            }

            Console.WriteLine($"共提取 {index} 張圖片,已儲存至 images 資料夾。");
            Console.ReadKey();
        }
    }
}

執行結果

程式執行完成後,專案輸出目錄下的 images 資料夾將包含所有提取出的 PNG 圖片:

提取出的圖片列表

補充說明

  • 本範例使用 E-iceblue 釋出的 Spire.Doc 免費版,除提取圖片外,同樣支援文字擷取、表格操作、格式轉換等功能。
  • 若需處理浮水印、頁首頁尾、文字框等特殊區域的圖片,需額外遍歷 HeaderFooter、TextBox 等集合。
  • 大量處理時建議加入例外處理與平行化邏輯以提升效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved