




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、MS WORD文檔格式研究 答辯人: 袁麗莉 指導(dǎo)老師:陳 奇引言:背景1計(jì)算機(jī)科學(xué)的發(fā)展,網(wǎng)絡(luò)技術(shù)的普及,使得人們的辦公理念發(fā)生了根本性變化,對辦公軟件也提出了更高的要求。 說通用辦公軟件WPS獨(dú)霸天下實(shí)際上比較夸張,金山之所以成為民族軟件的翹楚,其實(shí)是在于求先生敢于同蓋茨先生叫板的硬氣。而無法否認(rèn)的事實(shí)是,Microsoft的Office一直是辦公領(lǐng)域的主流。 背景2至今,許多人不使用WPS2000的一個(gè)很大的原因就在于它不能很好的支持WORD格式。事實(shí)上也是如此,WPS在技術(shù)上是無法與Office相比的,這是不爭的事實(shí)。金山最大的優(yōu)勢在于本土化,符合中國人的使用習(xí)慣。僅僅采取使用微軟提供
2、的win底下的c om接口不能滿足跨平臺的需求。 參考一下wps開發(fā)歷程1988年開始由求伯君一個(gè)人開始開發(fā)DOS下的WPS。 1995年6月開始由章立新負(fù)責(zé),歷時(shí)27個(gè)月董波、沈家正等人完成WPS 97的研發(fā)。 1998年開始由董波負(fù)責(zé),歷時(shí)18個(gè)月15人開發(fā)WPS 2000。 1999年10月開始由沈家正負(fù)責(zé),歷時(shí)20個(gè)月50余人開發(fā)WPS Office。2001年6月開始由萬里負(fù)責(zé),歷時(shí)12個(gè)月50余人開發(fā)WPS Office 2002。近200萬行代碼。 開發(fā)目的我們實(shí)驗(yàn)室在陳老師的帶領(lǐng)下,開發(fā)自己的一套辦公軟件,一方面是一種探索,是一種學(xué)術(shù)研究,另一方面,也可能是中國的另一個(gè)wps,
3、甚至也可以取代微軟在中國的地位,這個(gè)希望雖然渺茫,但是我們不斷的努力,肯定能出一定的成績。 開發(fā)目標(biāo) 讀出沒有格式的文本給文本加以相應(yīng)的格式 讀出所有word的格式,如圖形,聲音等 能夠存儲(chǔ)為word格式OLE vs 磁盤文件存儲(chǔ)一個(gè)簡單的結(jié)構(gòu)化存儲(chǔ)對象就像一個(gè)“磁盤”:它有文件分配表類似的功能,一個(gè)或者多個(gè)存儲(chǔ)對象(根目錄以及子目錄),一個(gè)或者多個(gè)流(路徑中包含的文件)。整個(gè)結(jié)構(gòu)可以在一個(gè)磁盤文件(MS-DOS或者NTFS)中。他也可以存在內(nèi)存中,甚至可以作為數(shù)據(jù)庫的一個(gè)記錄。 嵌套的聚集的功能表明如果你的當(dāng)前應(yīng)用使用多個(gè)數(shù)據(jù)文件,你可以把所有的文件包含在一個(gè)結(jié)構(gòu)化存儲(chǔ)對象中,而這個(gè)對象自身
4、可以被包含在一個(gè)磁盤文件里。Word文檔是一種OLE的復(fù)雜文檔讀出純文本W(wǎng)ord文檔分簡單文檔和復(fù)雜文檔,但是由于word97以后,都有piece table,可以不用區(qū)別這兩種文檔。各種文本在main stream中的偏移都可以在文件頭結(jié)構(gòu)FIB中找到,特別需要注意的是其中的特殊字符,有些是標(biāo)識當(dāng)前頁,有些是標(biāo)識下面是圖片之類的。讀文本的流程雖然FIB中記錄了相應(yīng)的偏移,但是由于復(fù)雜文檔的物理順序于邏輯順序是不對應(yīng)的,因此不能通過這個(gè)偏移而直接得到。一般的流程是FIB=piece table=main stream,這個(gè)流程不適合讀屬性讀字符和段落屬性先來看一下圖FKPPIECE TABLE
5、BIN TABLESTSHFKPFKP: 表示字符屬性或者段落屬性的連續(xù)512字節(jié)大小的一個(gè)數(shù)據(jù)結(jié)構(gòu)。他有三類FKP,分別是CHPX FKP,PAPX FKP,LVCX FKP。本文只涉及到CHPX FKP以及PAPX FKP。下面我們來看看這兩類FKP的結(jié)構(gòu)。 CHPX的結(jié)構(gòu):BYTE cb;BYTE rgcb; / 描述字符屬性的指令集(sprmlist)PAPX的結(jié)構(gòu)比較復(fù)雜,分兩種情況: 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的個(gè)數(shù)PAPX FKPFC fccrun +1;BX rgbxcrun;BYTE unused?;PAPX grppapxcrun;BYTE crun;/ BX結(jié)構(gòu):BYTE off;/ BYT
7、E bxPhe12;PIECE TABLE翻譯過來piece table就是一個(gè)樣表,它是字符邏輯順序于物理順序的一個(gè)對應(yīng),其中的cp數(shù)組是文檔的一個(gè)分割,和它一一對應(yīng)的另一個(gè)數(shù)組PCD則描述了每一個(gè)文字塊的物理位置以及其他一些信息。 BIN TABLE 一般來說word文檔有一個(gè)CHPX FKP,PAPX FKP,LVCX FKP,但由于FKP是定長的,固定是512字節(jié),所以當(dāng)要表達(dá)的字符屬性差異或者段落屬性差異不能在一個(gè)FKP結(jié)構(gòu)表述的時(shí)候,就需要增加。一般CHPX FKP,PAPX FKP,LVCX FKP是交叉存儲(chǔ)的,但事先我們不能知道各類FKP的數(shù)量,因?yàn)镕IB結(jié)構(gòu)中關(guān)于FKP數(shù)量的
8、描述是無用的,不管是什么類型的word文檔,它都把這些變量置0了。因此就需要通過bin table,來找到相應(yīng)FKP在main stream中的頁號 STSH樣式表樣表是一個(gè)描述文檔字符邏輯順序的數(shù)據(jù)結(jié)構(gòu),它記錄了word 文檔最近的格式變換。樣表數(shù)據(jù)結(jié)構(gòu)用一個(gè)邏輯字符數(shù)據(jù)cp來表示word文件中的物理位置fc。數(shù)組cp是文本的一個(gè)分割。第二個(gè)數(shù)組是樣表描述(pcd)數(shù)組,它與cp數(shù)組一一對應(yīng),cp記錄了相應(yīng)的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結(jié)構(gòu)設(shè)計(jì)分析 1設(shè)計(jì)充分考慮了將來的擴(kuò)充 頻繁運(yùn)用“虛擬”和“指針”的概念,使得文章的結(jié)構(gòu)清晰,容易查找和定位 提出了頁的概念,不同的塊一般都以頁為界限作為開頭,這樣文檔即使有較大的變化,也不至于改變太多不相關(guān)的內(nèi)容,基本實(shí)現(xiàn)了小范圍修改。 結(jié)構(gòu)設(shè)計(jì)分析 2采取unicode 的形式,以便在各國文字間的通用,同時(shí)考慮到有的文章是全字符形式
10、的,為了盡可能的減少存儲(chǔ)量,采取了壓縮方式,以ascii碼來表示字符。 文字格式和段落格式的存儲(chǔ)頗具特色,在它的文件中保存了一份默認(rèn)的格式,而文字和段落的格式都采用了“差額保存”的辦法,而且將格式相同的連續(xù)文字作為run統(tǒng)一保存,這樣一來節(jié)省了大量的空間,因此較大容量的word文檔所占的空間并不會(huì)太大。 結(jié)構(gòu)設(shè)計(jì)分析 3具有針對性:把文檔分成四個(gè)流Word把文檔分成簡單和復(fù)雜文檔 ,復(fù)雜文檔保存了最后一次完全保存文檔上對文檔進(jìn)行的操作指令,而不是保存最后的結(jié)果 。優(yōu)點(diǎn)就跟數(shù)據(jù)庫里的日志。讀寫操作比較麻煩,即使只想得到其中的文字,也不得不涉及到兩個(gè)流,而且兩個(gè)流之間的關(guān)系復(fù)雜結(jié)構(gòu)設(shè)計(jì)分析 4總的
11、感覺使word把結(jié)構(gòu)分得很細(xì),其他的簡單一點(diǎn)的存儲(chǔ)格式跟它比就好像使手工作坊和流水線作業(yè),大家都知道流水線的的總效率是非常高的,但是你要說只是一個(gè)產(chǎn)品,那就不一定了,只有在數(shù)量大的時(shí)候才能體現(xiàn)出高效率,word也一樣,特別是在大的文檔或者是又復(fù)雜屬性的時(shí)候體現(xiàn)出它的優(yōu)點(diǎn)。結(jié)構(gòu)設(shè)計(jì)思考以前總是聽有人說word結(jié)構(gòu)太復(fù)雜了,存儲(chǔ)了很多沒有用的信息,它的功能中也只有2是常用的,感覺很浪費(fèi)。但是你在使用word的過程中感覺到很慢了嘛,特別是現(xiàn)在機(jī)器配置比以前好很多的情況下,基本不會(huì)出現(xiàn)太大的問題。我們考慮問題要全面周到,不是說只要提供常見的就可以了,其他的基本是浪費(fèi),當(dāng)然還要有遠(yuǎn)見,像word這樣,你
12、看他97的版本能夠考慮到這么多,計(jì)算機(jī)發(fā)展這么快,他到現(xiàn)在還能適應(yīng),可以想象設(shè)計(jì)的時(shí)候是花了很大心思的。典型問題分析如何區(qū)分復(fù)雜文檔和簡單文檔? Header subdocument text stream以及header textbox subdocument text stream具體指什么? 各個(gè)stream是按一定順序連續(xù)存儲(chǔ)的嘛? 打開word文檔,發(fā)現(xiàn)它的存儲(chǔ)中有很多是無用的信息,都是以0000形式存儲(chǔ)的,這樣以來,空間很是浪費(fèi)?。?你覺得word里什么結(jié)構(gòu)最精妙? Word結(jié)構(gòu)這么復(fù)雜,能不能總結(jié)一下他所采取的策略?猜測一下它當(dāng)初設(shè)計(jì)時(shí)候的總方案。 如何區(qū)分復(fù)雜文檔和簡單文檔?
13、很簡單,要生成復(fù)雜文檔,可以通過 工具選項(xiàng)保存,然后選擇快速保存。簡單文檔和復(fù)雜文檔的區(qū)別是簡單文檔的文本是連續(xù)存儲(chǔ)的,跟文本邏輯順序一一對應(yīng),而復(fù)雜文檔則不是。在讀文檔的時(shí)候本來可以根據(jù)main stream 中FIB結(jié)構(gòu)指示是否為復(fù)雜文檔,但是由于這個(gè)標(biāo)志位已經(jīng)不再被使用,所以也無法在讀word文檔的時(shí)候決定是否簡單文檔,其實(shí)也沒有必要了,因?yàn)閣ord97 以后的版本都包含了piece table,無論簡單還是復(fù)雜文檔,讀方法都是一樣的。 Header subdocument text stream以及header textbox subdocument text stream具體指什么?
14、 這兩者都跟頁眉和頁腳有關(guān),不要把header當(dāng)成是標(biāo)題,這是不對的。 各個(gè)stream是按一定順序連續(xù)存儲(chǔ)的嘛? 不是的。前面講了ole文檔結(jié)構(gòu)其實(shí)就跟磁盤存儲(chǔ)文件格式一樣,他可以通過一張表格也可以是鏈表的形式組織一篇文檔,所以,一般來說都是不連續(xù)的。打開word文檔,發(fā)現(xiàn)它的存儲(chǔ)中有很多是無用的信息,都是以0000形式存儲(chǔ)的,這樣以來,空間很是浪費(fèi)?。?這就涉及到word的兼容性和擴(kuò)充性,以及對于大的文檔處理的合理性來考慮了。Word的設(shè)計(jì)充分考慮了將來擴(kuò)充的要求,比如它定義了頁的標(biāo)準(zhǔn),把512字節(jié)當(dāng)成一頁,一般不同的結(jié)構(gòu)在存儲(chǔ)的時(shí)候都是從頁的邊界開始的,而不是緊接著前面的結(jié)構(gòu),采取緊湊式
15、存儲(chǔ),表面上看這是浪費(fèi)空間,其實(shí)這才體現(xiàn)了它結(jié)構(gòu)的優(yōu)越性。設(shè)想一下,當(dāng)你要修改一個(gè)文檔的時(shí)候,如果是少量的修改,word就只要填充那些0000,而不必要把后面的整塊結(jié)構(gòu)往后移。自從office 97以來,結(jié)構(gòu)一直沒變,除了excel 97跟excel 2000和excel 2002有不同以外,它都保持了良好的兼容性。一方面是它設(shè)計(jì)的時(shí)候考慮了很多將來要實(shí)現(xiàn)的功能,另一方面正是他的這種存儲(chǔ)方式使得它保持了良好的兼容性。這些都是需要我們仔細(xì)思考的。 你覺得word里什么結(jié)構(gòu)最精妙? 這是仁者見仁智者見智的問題。我現(xiàn)在覺得沒什么結(jié)構(gòu)是最精妙的,他的設(shè)計(jì)采取的好像都是同一個(gè)原則,采用的方法都差不多。我倒是覺得他采取的策略很好比較聰明,采用的是現(xiàn)有的,比如說Ole吧,就是采用了磁盤文件的相同方法,還有物理存儲(chǔ)的位置采用虛擬的方式,這跟操作系統(tǒng)差不多阿。他的思維方式值得我們借鑒,他的設(shè)計(jì)使得功能的擴(kuò)充很方便,而且能夠保持很好的版本兼容性,老的版本能夠都新版本沒有增加的部分,新版本能夠都老版本所有格式。這對于一個(gè)要長期應(yīng)用的軟件是多么重要,如果不同版本之間的用戶不能交流的話,升級
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯乘客信息安全保護(hù)措施考核試卷
- 畜牧業(yè)生產(chǎn)性能測定與評價(jià)考核試卷
- 山東司法警官職業(yè)學(xué)院《體育課程與教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海財(cái)經(jīng)大學(xué)浙江學(xué)院《熱動(dòng)專業(yè)英語A》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省宜興市張渚徐舍教聯(lián)盟重點(diǎn)中學(xué)2025年初三3月月考(數(shù)學(xué)試題文)含解析
- 遼寧稅務(wù)高等??茖W(xué)校《食品法規(guī)與標(biāo)準(zhǔn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古呼和浩特市第六中學(xué)2025屆高三一診模擬考試英語試題含解析
- 天津工藝美術(shù)職業(yè)學(xué)院《生物學(xué)綜合(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 牡丹江大學(xué)《建筑給水排水工程課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林省延邊市長白山第一高級中學(xué)2025屆高三第二學(xué)期第2次月考綜合試題含解析
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 《青蒿素人類征服疾病的一小步》《一名物理學(xué)家的教育歷程》聯(lián)讀課件高中語文必修下冊
- 物業(yè)節(jié)前安全檢查方案
- 全過程工程咨詢服務(wù)項(xiàng)目管理服務(wù)方案
- 中國政法大學(xué)
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標(biāo))
- 微波技術(shù)與天線實(shí)驗(yàn)3利用HFSS仿真分析矩形波導(dǎo)
- 智能移動(dòng)焊接機(jī)器人設(shè)計(jì)案例及分析
- 腎性水腫病人護(hù)理課件
- DB13(J)-T 8496-2022 城市污水處理廠提標(biāo)改造技術(shù)標(biāo)準(zhǔn)
- 煙草雪茄培訓(xùn)課件講解
評論
0/150
提交評論