專案需求:讀取 `.doc`、`.docx`、`.pdf` 三種格式純文字內容。經調研採用成熟套件組合,避免重造輪子。
| 格式 | 核心元件 | 部署注意 |
|---|---|---|
| .doc / .docx | Microsoft Word 14.0 Object Library (COM Interop) | 機器需安裝 Word;版本對應 COM 版本號(14.0 = Office 2010) |
| PDFBox (Apache, Java 移植版 IKVM) | 純 .NET 無 Office 相依,適合 Server 端 |
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();
}
}
}
}
若在 ASP.NET/IIS 環境呼叫 Word COM: