查找XPS文件內容中的文字


      最新在做一個功能:輸入搜索詞,在一堆XPS文件中找出內容中含搜索詞的文檔。

      XPS並沒有提供方法直接讀取內容,因為XPS中可以有文字,也可以有圖片。你無法簡單的變成一個String。

  我寫的這個方法比較粗糙的提取了文字內容,並沒有很精細的去做過濾,但已經能滿足我的功能了,讀者可以根據自己的需求再進一步的做一些過濾。

 

      解決思路:

  1、讀取XPS,將XPS轉成XpsDocument。

  2、遍歷FixedDocuments。

  3、遍歷FixedPages。

  4、將每一個Page轉成XmlReader。

  5、解析這個XML,讀取內容。

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Xps.Packaging;
using System.Windows.Forms;
using System.Printing;
using System.IO;
using System.IO.Packaging;
using System.Windows.Xps;
using System.Xml;
 
       /// <summary>
        /// 返回XPS文件中的內容。
        /// </summary>
        /// <param name="xpsPath">@"E:\代碼測試區\XPS\Content\XPS_1_0.xps"</param>
        /// <returns></returns>
        private string GetXPSContent(string xpsPath)
        {
            StringBuilder sb = new StringBuilder();
            XpsDocument xpsDocument = new System.Windows.Xps.Packaging.XpsDocument(xpsPath, FileAccess.Read);
            var reader = xpsDocument.FixedDocumentSequenceReader;
            foreach (var document in reader.FixedDocuments)
            {
                foreach (var page in document.FixedPages)
                {
                    XmlReader xrdr = page.XmlReader;
                    while (xrdr.Read())
                    {
                        switch (xrdr.NodeType)
                        {
                            case XmlNodeType.Element:
                                if (xrdr.Name == "Glyphs")
                                    sb.Append(xrdr["UnicodeString"]);
                                break;
                            default: break;
                        }
                    }
                }
            }
            return sb.ToString();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM