最近項目需要實現一個功能:讀取doc,docx,pdf文件內容。在網上搜羅許久,還是發現有些好東西可以直接拿來使用,要不然就得自己發明輪子了。接下來我就簡單介紹了用了哪些組件來實現這個功能的。
Doc文檔:Microsoft Word 14.0 Object Library (GAC對象,調用前需要安裝word。安裝的word版本不同,COM的版本號也會不同)
Docx文檔:Microsoft Word 14.0 Object Library (GAC對象,調用前需要安裝word。安裝的word版本不同,COM的版本號也會不同)
Pdf文檔:PDFBox
DEMO
/* 作者:GhostBear * 博客地址:Http://blog.csdn.net/ghostbear */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Text.RegularExpressions; using org.pdfbox.pdmodel; using org.pdfbox.util; using Microsoft.Office.Interop.Word; namespace TestPdfReader { class Program { static void Main(string[] args) { //PDF PDDocument doc = PDDocument.load(@"C:\resume.pdf"); PDFTextStripper pdfStripper = new PDFTextStripper(); string text = pdfStripper.getText(doc); string result = text.Replace('\t', ' ').Replace('\n', ' ').Replace('\r', ' ').Replace(" ", ""); Console.WriteLine(result); //Doc,Docx object docPath = @"C:\resume.doc"; object docxPath = @"C:\resume.docx"; object missing=System.Reflection.Missing.Value; object readOnly=true; Application wordApp; wordApp = new Application(); Document wordDoc = wordApp.Documents.Open(ref docPath, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); string text2 = FilterString(wordDoc.Content.Text); wordDoc.Close(ref missing, ref missing, ref missing); wordApp.Quit(ref missing, ref missing, ref missing); Console.WriteLine(text2); Console.Read(); } private static string FilterString(string input) { return Regex.Replace(input, @"(\a|\t|\n|\s+)", ""); } } }
小結
如果需要在IIS上運行該代碼,則需要配置組件“Microsoft Word 14.0 Object Library”的DCOM配置。具體細節可以參考文章:Word組件的DCOM配置。
代碼下載:http://download.csdn.net/detail/ghostbear/4847887