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

C# 讀取 Word (doc/docx) 與 PDF 文件內容完整方案

     編輯:關於C#

專案需求:讀取 `.doc`、`.docx`、`.pdf` 三種格式純文字內容。經調研採用成熟套件組合,避免重造輪子。

技術選型

格式核心元件部署注意
.doc / .docxMicrosoft Word 14.0 Object Library (COM Interop)機器需安裝 Word;版本對應 COM 版本號(14.0 = Office 2010)
.pdfPDFBox (Apache, Java 移植版 IKVM)純 .NET 無 Office 相依,適合 Server 端

完整 Demo 程式碼

using System;
using System.IO;
using System.Text.RegularExpressions;
using Microsoft.Office.Interop.Word;
using org.pdfbox.pdmodel;
using org.pdfbox.util;

namespace DocPdfReader {
    class Program {
        static void Main() {
            // === PDF 讀取 ===
            string pdfText = ExtractPdfText(@"C:\resume.pdf");
            Console.WriteLine($"[PDF]\n{pdfText}");

            // === Word 讀取 ===
            string docText = ExtractWordText(@"C:\resume.doc");
            Console.WriteLine($"[DOC]\n{docText}");

            string docxText = ExtractWordText(@"C:\resume.docx");
            Console.WriteLine($"[DOCX]\n{docxText}");

            Console.ReadKey();
        }

        static string ExtractPdfText(string path) {
            using var doc = PDDocument.load(path);
            var stripper = new PDFTextStripper();
            string raw = stripper.getText(doc);
            return Regex.Replace(raw, @"[\t\n\r\s]+", " ").Trim();
        }

        static string ExtractWordText(string path) {
            var app = new Application();
            var doc = app.Documents.Open(
                path,
                ReadOnly: true,
                Visible: false
            );
            try {
                string raw = doc.Content.Text;
                return Regex.Replace(raw, @"[\t\n\r\s]+", " ").Trim();
            }
            finally {
                doc.Close(SaveChanges: false);
                app.Quit();
            }
        }
    }
}

關鍵實作細節

  1. 資源釋放: Word COM 物件必須在 `finally` 區塊正確 `Close`/`Quit`,否則殘留 `WINWORD.EXE` 程序。
  2. 正則清洗: `[\t\n\r\s]+` 合併連續空白字元為單一空格,提升可讀性。
  3. PDFBox 優勢: 無需 Adobe Reader,跨平台(IKVM/.NET Core 移植版),Server 端部署零痛點。

IIS / Server 部署避坑指南

若在 ASP.NET/IIS 環境呼叫 Word COM:

  1. 元件服務 (dcomcnfg) → 電腦 → 我的電腦 → DCOM 設定 → Microsoft Word Document → 內容 → 身分識別 → 選「互動使用者」或指定服務帳號。
  2. 授權:服務帳號需有 Word 授權、桌面互動權限。
  3. 強烈建議: Server 端改用 OpenXML SDK (`.docx`) 或 LibreOffice Headless + unoconv (`.doc`),完全免 Office 授權與 DCOM 痛點。

原始碼下載

完整專案下載 (CSDN)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved