文本1人指導老師_第1頁
文本1人指導老師_第2頁
文本1人指導老師_第3頁
文本1人指導老師_第4頁
文本1人指導老師_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、MS WORD文檔格式研究 答辯人: 袁麗莉 指導老師:陳 奇引言:背景1計算機科學的發(fā)展,網(wǎng)絡技術的普及,使得人們的辦公理念發(fā)生了根本性變化,對辦公軟件也提出了更高的要求。 說通用辦公軟件WPS獨霸天下實際上比較夸張,金山之所以成為民族軟件的翹楚,其實是在于求先生敢于同蓋茨先生叫板的硬氣。而無法否認的事實是,Microsoft的Office一直是辦公領域的主流。 背景2至今,許多人不使用WPS2000的一個很大的原因就在于它不能很好的支持WORD格式。事實上也是如此,WPS在技術上是無法與Office相比的,這是不爭的事實。金山最大的優(yōu)勢在于本土化,符合中國人的使用習慣。僅僅采取使用微軟提供

2、的win底下的c om接口不能滿足跨平臺的需求。 參考一下wps開發(fā)歷程1988年開始由求伯君一個人開始開發(fā)DOS下的WPS。 1995年6月開始由章立新負責,歷時27個月董波、沈家正等人完成WPS 97的研發(fā)。 1998年開始由董波負責,歷時18個月15人開發(fā)WPS 2000。 1999年10月開始由沈家正負責,歷時20個月50余人開發(fā)WPS Office。2001年6月開始由萬里負責,歷時12個月50余人開發(fā)WPS Office 2002。近200萬行代碼。 開發(fā)目的我們實驗室在陳老師的帶領下,開發(fā)自己的一套辦公軟件,一方面是一種探索,是一種學術研究,另一方面,也可能是中國的另一個wps,

3、甚至也可以取代微軟在中國的地位,這個希望雖然渺茫,但是我們不斷的努力,肯定能出一定的成績。 開發(fā)目標 讀出沒有格式的文本給文本加以相應的格式 讀出所有word的格式,如圖形,聲音等 能夠存儲為word格式OLE vs 磁盤文件存儲一個簡單的結構化存儲對象就像一個“磁盤”:它有文件分配表類似的功能,一個或者多個存儲對象(根目錄以及子目錄),一個或者多個流(路徑中包含的文件)。整個結構可以在一個磁盤文件(MS-DOS或者NTFS)中。他也可以存在內(nèi)存中,甚至可以作為數(shù)據(jù)庫的一個記錄。 嵌套的聚集的功能表明如果你的當前應用使用多個數(shù)據(jù)文件,你可以把所有的文件包含在一個結構化存儲對象中,而這個對象自身

4、可以被包含在一個磁盤文件里。Word文檔是一種OLE的復雜文檔讀出純文本W(wǎng)ord文檔分簡單文檔和復雜文檔,但是由于word97以后,都有piece table,可以不用區(qū)別這兩種文檔。各種文本在main stream中的偏移都可以在文件頭結構FIB中找到,特別需要注意的是其中的特殊字符,有些是標識當前頁,有些是標識下面是圖片之類的。讀文本的流程雖然FIB中記錄了相應的偏移,但是由于復雜文檔的物理順序于邏輯順序是不對應的,因此不能通過這個偏移而直接得到。一般的流程是FIB=piece table=main stream,這個流程不適合讀屬性讀字符和段落屬性先來看一下圖FKPPIECE TABLE

5、BIN TABLESTSHFKPFKP: 表示字符屬性或者段落屬性的連續(xù)512字節(jié)大小的一個數(shù)據(jù)結構。他有三類FKP,分別是CHPX FKP,PAPX FKP,LVCX FKP。本文只涉及到CHPX FKP以及PAPX FKP。下面我們來看看這兩類FKP的結構。 CHPX的結構:BYTE cb;BYTE rgcb; / 描述字符屬性的指令集(sprmlist)PAPX的結構比較復雜,分兩種情況: BYTE cb; / cb != 0 BYTE rgcb*2-1;或者: BYTE cb = 0; BYTE cb2; BYTE rgcb2*2;而且這里的rg還不是最終的段落屬性的指令集(sprml

6、ist)。而是 WORD istd; BYTE rg2; / 這才是sprmlist CHPX FKPFC fccrun + 1; /boundary of each runBYTE offcrun; /chpx offset in fkp ; offI*2 is the offsetBYTE unused?;CHPX grpchpxcrun; /CHPX 列表BYTE crun; /本FKP中CHPX的個數(shù)PAPX FKPFC fccrun +1;BX rgbxcrun;BYTE unused?;PAPX grppapxcrun;BYTE crun;/ BX結構:BYTE off;/ BYT

7、E bxPhe12;PIECE TABLE翻譯過來piece table就是一個樣表,它是字符邏輯順序于物理順序的一個對應,其中的cp數(shù)組是文檔的一個分割,和它一一對應的另一個數(shù)組PCD則描述了每一個文字塊的物理位置以及其他一些信息。 BIN TABLE 一般來說word文檔有一個CHPX FKP,PAPX FKP,LVCX FKP,但由于FKP是定長的,固定是512字節(jié),所以當要表達的字符屬性差異或者段落屬性差異不能在一個FKP結構表述的時候,就需要增加。一般CHPX FKP,PAPX FKP,LVCX FKP是交叉存儲的,但事先我們不能知道各類FKP的數(shù)量,因為FIB結構中關于FKP數(shù)量的

8、描述是無用的,不管是什么類型的word文檔,它都把這些變量置0了。因此就需要通過bin table,來找到相應FKP在main stream中的頁號 STSH樣式表樣表是一個描述文檔字符邏輯順序的數(shù)據(jù)結構,它記錄了word 文檔最近的格式變換。樣表數(shù)據(jù)結構用一個邏輯字符數(shù)據(jù)cp來表示word文件中的物理位置fc。數(shù)組cp是文本的一個分割。第二個數(shù)組是樣表描述(pcd)數(shù)組,它與cp數(shù)組一一對應,cp記錄了相應的piece的起始物理地址。Rgfc.Rgb.GrpchpxspacecrunChpx fkpPCSPCDsIf(pcd.fc&0 x40000000L)Fc = pcd.fc&40000

9、000LFc = fc /2 Rgfc.RgbxGrpchpxspacecrunPapx fkpStyle sheet Copy pap Copy chp stshiStd *Piece tableBin table(hplcfbtechpx)CHPX FKP結構設計分析 1設計充分考慮了將來的擴充 頻繁運用“虛擬”和“指針”的概念,使得文章的結構清晰,容易查找和定位 提出了頁的概念,不同的塊一般都以頁為界限作為開頭,這樣文檔即使有較大的變化,也不至于改變太多不相關的內(nèi)容,基本實現(xiàn)了小范圍修改。 結構設計分析 2采取unicode 的形式,以便在各國文字間的通用,同時考慮到有的文章是全字符形式

10、的,為了盡可能的減少存儲量,采取了壓縮方式,以ascii碼來表示字符。 文字格式和段落格式的存儲頗具特色,在它的文件中保存了一份默認的格式,而文字和段落的格式都采用了“差額保存”的辦法,而且將格式相同的連續(xù)文字作為run統(tǒng)一保存,這樣一來節(jié)省了大量的空間,因此較大容量的word文檔所占的空間并不會太大。 結構設計分析 3具有針對性:把文檔分成四個流Word把文檔分成簡單和復雜文檔 ,復雜文檔保存了最后一次完全保存文檔上對文檔進行的操作指令,而不是保存最后的結果 。優(yōu)點就跟數(shù)據(jù)庫里的日志。讀寫操作比較麻煩,即使只想得到其中的文字,也不得不涉及到兩個流,而且兩個流之間的關系復雜結構設計分析 4總的

11、感覺使word把結構分得很細,其他的簡單一點的存儲格式跟它比就好像使手工作坊和流水線作業(yè),大家都知道流水線的的總效率是非常高的,但是你要說只是一個產(chǎn)品,那就不一定了,只有在數(shù)量大的時候才能體現(xiàn)出高效率,word也一樣,特別是在大的文檔或者是又復雜屬性的時候體現(xiàn)出它的優(yōu)點。結構設計思考以前總是聽有人說word結構太復雜了,存儲了很多沒有用的信息,它的功能中也只有2是常用的,感覺很浪費。但是你在使用word的過程中感覺到很慢了嘛,特別是現(xiàn)在機器配置比以前好很多的情況下,基本不會出現(xiàn)太大的問題。我們考慮問題要全面周到,不是說只要提供常見的就可以了,其他的基本是浪費,當然還要有遠見,像word這樣,你

12、看他97的版本能夠考慮到這么多,計算機發(fā)展這么快,他到現(xiàn)在還能適應,可以想象設計的時候是花了很大心思的。典型問題分析如何區(qū)分復雜文檔和簡單文檔? Header subdocument text stream以及header textbox subdocument text stream具體指什么? 各個stream是按一定順序連續(xù)存儲的嘛? 打開word文檔,發(fā)現(xiàn)它的存儲中有很多是無用的信息,都是以0000形式存儲的,這樣以來,空間很是浪費啊! 你覺得word里什么結構最精妙? Word結構這么復雜,能不能總結一下他所采取的策略?猜測一下它當初設計時候的總方案。 如何區(qū)分復雜文檔和簡單文檔?

13、很簡單,要生成復雜文檔,可以通過 工具選項保存,然后選擇快速保存。簡單文檔和復雜文檔的區(qū)別是簡單文檔的文本是連續(xù)存儲的,跟文本邏輯順序一一對應,而復雜文檔則不是。在讀文檔的時候本來可以根據(jù)main stream 中FIB結構指示是否為復雜文檔,但是由于這個標志位已經(jīng)不再被使用,所以也無法在讀word文檔的時候決定是否簡單文檔,其實也沒有必要了,因為word97 以后的版本都包含了piece table,無論簡單還是復雜文檔,讀方法都是一樣的。 Header subdocument text stream以及header textbox subdocument text stream具體指什么?

14、 這兩者都跟頁眉和頁腳有關,不要把header當成是標題,這是不對的。 各個stream是按一定順序連續(xù)存儲的嘛? 不是的。前面講了ole文檔結構其實就跟磁盤存儲文件格式一樣,他可以通過一張表格也可以是鏈表的形式組織一篇文檔,所以,一般來說都是不連續(xù)的。打開word文檔,發(fā)現(xiàn)它的存儲中有很多是無用的信息,都是以0000形式存儲的,這樣以來,空間很是浪費??! 這就涉及到word的兼容性和擴充性,以及對于大的文檔處理的合理性來考慮了。Word的設計充分考慮了將來擴充的要求,比如它定義了頁的標準,把512字節(jié)當成一頁,一般不同的結構在存儲的時候都是從頁的邊界開始的,而不是緊接著前面的結構,采取緊湊式

15、存儲,表面上看這是浪費空間,其實這才體現(xiàn)了它結構的優(yōu)越性。設想一下,當你要修改一個文檔的時候,如果是少量的修改,word就只要填充那些0000,而不必要把后面的整塊結構往后移。自從office 97以來,結構一直沒變,除了excel 97跟excel 2000和excel 2002有不同以外,它都保持了良好的兼容性。一方面是它設計的時候考慮了很多將來要實現(xiàn)的功能,另一方面正是他的這種存儲方式使得它保持了良好的兼容性。這些都是需要我們仔細思考的。 你覺得word里什么結構最精妙? 這是仁者見仁智者見智的問題。我現(xiàn)在覺得沒什么結構是最精妙的,他的設計采取的好像都是同一個原則,采用的方法都差不多。我倒是覺得他采取的策略很好比較聰明,采用的是現(xiàn)有的,比如說Ole吧,就是采用了磁盤文件的相同方法,還有物理存儲的位置采用虛擬的方式,這跟操作系統(tǒng)差不多阿。他的思維方式值得我們借鑒,他的設計使得功能的擴充很方便,而且能夠保持很好的版本兼容性,老的版本能夠都新版本沒有增加的部分,新版本能夠都老版本所有格式。這對于一個要長期應用的軟件是多么重要,如果不同版本之間的用戶不能交流的話,升級

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論