XWriterLib文本編輯器中間件軟件技術白皮書

XWriterLib文本編輯器中間件軟件

技術白皮書

(初稿)

 

 

 

袁永福

2007-11-5

 

 

 

 

 

 

前言

XWriterLib文本編輯器中間件軟件是XDesigner圖形軟件工作室自主開發的有一個高級圖形軟件組件,爲開發人員開發專業的富文本編輯器類型軟件提供的強大的基礎,本文檔就是對XWriterLib文本編輯器中間件軟件進行技術方面的說明,使得閱讀者對XWriterLib軟件有一個基本的認識,方便深入瞭解和開發。

以下將XWriterLib文本編輯器中間件軟件簡稱爲XWriterLib。

 

本文檔合適的閱讀者

本文檔合適的閱讀者是希望瞭解XWriterLib的計算機軟件開發人員,本文檔主要是對XWriterLib進行基本的技術說明,並不詳細說明XWriterLib的開發接口和開發過程。欲瞭解XWriterLib詳細的編程接口可參考XWriterLib的用戶手冊。

作者聯繫方式

對XWriterLib興趣的人可以通過以下聯繫方式聯繫作者

MSN [email protected]

電子郵件 [email protected] 

OICQ 28348092

袁永福個人網站 http://www.xdesigner.cn 

作者博客網址 http://xdesigner.cnblogs.com ( 由博客園 http://www.cnblogs.com 提供)

 

基本概念

本章對XWriterLib涉及到的一些概念進行說明,方便閱讀者能更好的閱讀和理解本文檔。本章節涉及到富文本編輯器基本概念,MS DOT.NET的圖形開發,文檔對象模型,RTF文檔格式等概念,若讀者已經瞭解這些內容則可以跳過本章節。

文本編輯器/富文本編輯器

計算機最大的用途就是進行信息處理,其中很重要的就是文字信息處理,文字信息處理主要包括文字文檔的輸入,編輯,保存和打印等功能,此外用戶界面上還要實現所見即所得的用戶體驗。這些都是專業的文字編輯器所必須的功能。

此外在很多情況下文字文檔已經不限於普通的純文本內容,而是一種所謂的富格式文本文檔內容,在富文本文檔中,用戶可以設置文字的顏色,字體樣式,還可以設置文檔內容的的對齊方式,行間距和字符間距,此外還能插入圖片等非文字內容。支持富文本文檔格式的文本編輯器可稱爲富文本編輯器。以下所說的文本編輯器都是指富文本編輯器。

現在已經存在很多專業的文本編輯器類型軟件,比如微軟Word,金山WPS等大型的通用文字處理軟件;還有一些小型的文本編輯器類型軟件,比如Windows寫字板。

文本編輯器使用非常廣泛,是除操作系統外使用最廣泛的軟件類型。大部分計算機操作人員都需要使用文本編輯器來編輯各種文本文檔,軟件開發人員需要使用開發環境提供的代碼文本編輯器來輸入程序代碼。可以預見,在未來很長的一段時間內,文本編輯器軟件類型仍然是計算機軟件的主要類型之一,是一種基礎軟件。

文本編輯器同時也是一種技術含量比較高的軟件類型。開發文本編輯器涉及到很多計算機軟件開發技術,包括文檔加載和保存,文檔對象模型,高級圖形軟件技術,高性能圖形編程,文字排版技術等等。因此文本編輯器軟件技術門檻高,開發難度大,需要有優秀的軟件開發者來開發它。

在國內軟件行業中,大部分軟件開發者開發行業應用軟件,其中部分客戶需要文本編輯器類型的軟件模塊,而使用MS Word組件或IE瀏覽器組件等文本編輯器組件進行開發時由於受到這些組件本身的功能限制而且又沒有源代碼進行深入的二次開發,因此一些客戶的需求難於滿足或不能實現。根據微軟一貫的商業策略,微軟未來不大可能提供比標準RichTextBox更強大的文本編輯器組件,因此開發者不得不面臨開發文本編輯器這種複雜軟件的任務。

爲此XWriterLib爲這些開發者提供了一個新的選擇,它提供了一個富文本編輯器的基本功能,可在它的基礎上低成本的開發各種文本編輯器模塊,並可經過授權獲得其源代碼,從而可以進行深入的二次開發而幾乎沒有限制的擴展其功能,從而滿足客戶的各種需求。

微軟.NET圖形開發

微軟.NET平臺是微軟主導的軟件開發平臺,一定程度上代表着國際軟件業的先進生產力,微軟.NET提供了很多先進的特性,其中包括了相當強的圖形開發功能。

相對於傳統的Win32API/GDI圖形開發模式,微軟.NET對圖形開發提供了更強的支持,而且開發接口更加友好。它提供的類庫中名稱空間System.Drawing下都是對圖形編程接口。你可以使用面向對象的編程思想來進行圖形開發。這樣可以比以往更方便的開發類似文本編輯器這樣的複雜圖形軟件。

雖然微軟.NET對圖形開發提供了更強的支持,仍然保留了對傳統的Win32API/GDI的支持,在少數情況下仍然可以調用Win32API/GDI來實現一些圖形效果,比如屏幕像素的反色,光標的處理,文字輸入法的控制。

在大部分情況下使用微軟.NET提供的標準圖形開發接口,少數情況下使用Win32API/GDI的模式下,我們可以開發出一個文本編輯器類型軟件,而且其中的工作量比完全用Win32API/GDI要少很多。

文檔對象模型

文本編輯器要處理富文本文檔,這種文檔是一種比較複雜的數據結構,其中可能存在層次結構,還包含了多種文檔元素,而且各種文檔元素組織排序比較自由。對於這種複雜的數據結構,使用傳統的面向過程的算法或者善於處理數據庫的關係型算法都難於處理,此時比較合適的就是採用完全面向對象的文檔對象模型技術來進行處理。

文檔對象模型是面向對象編程思想在處理複雜文檔的一個範例,其基本工作原理是:使用一個個內存中的編程對象映射到文檔中的某個部分或元素,比如使用一個字符元素對象映射到文檔中的一個字符,圖片元素對象映射到文檔中的一個圖片。則應用程序讀取和修改內存中的編程對象的數據,經過這些映射關係就轉化爲讀取和修改文檔內容。

文檔對象模型是一種比較高級的軟件設計模式,它比較充分的運用了面向對象編程思想的各種內容,包括封裝,繼承,重載等等,因此其開發過程比較複雜,但能處理一些複雜的數據結構,尤其是很適合處理比較複雜的富格式文本文檔數據結構。因此文本編輯器處理文本文檔時,基本上都得使用文檔對象模型來操作文本文檔,文本文檔的文檔對象模型是文本編輯器中的很核心的一個模塊。

RTF文檔格式

RTF文檔格式爲上世紀微軟提出的富文本文檔存儲格式,它是一種基於ANSI字符集的依賴標記存儲多種信息的文檔格式。這種文檔格式歷史悠久,使用廣泛,現在已有大量的軟件支持這種文檔格式,Windows操作系統本身也支持RTF格式。因此開發富文本文檔編輯器很有必要支持RTF文檔格式。若能支持RTF格式,則文本編輯器能通過RTF文檔格式來和大量的其他軟件交換文本文檔。

RTF文檔存儲格式比較簡單,但內容比較多,它使用一對花括號來定義一個標籤組,標籤組可以套嵌定義,使用一個斜線號“\”來開始定義一個標籤或指令。RTF文檔中就使用這種簡單的標籤格式來定義文字,段落和圖片等信息。

關於RTF文檔格式的詳細內容可參考微軟提供的RTF文檔技術手冊。

 

XWriterLib介紹

XWriterLib開發背景

隨着國內軟件業的快速發展,越來越多的信息化系統實施和投入運行,客戶的要求也越來越高,已經開始不滿足於常規的基於關係型數據庫的信息化系統,對軟件系統的多個方面提出越來越高級的需求,其中包括對用戶界面提出新的更高的需求。在一些情況下,客戶可能提出文本編輯器類型軟件的需求,要求能定製文本編輯器類型軟件,這些軟件除了具備常規的文本編輯功能外,還要根據自身業務需要添加其特有的功能。

軟件開發者可以在一些已有的文本編輯器組件上進行比較簡單的二次開發來實現這些功能,比如可以在RichTextBox,MS Word,IE瀏覽器等組件上進行開發,這一定程度上可以滿足定製文本編輯器的功能需求,但由於這些文本編輯器組件沒有足夠靈活的編程接口,沒有源代碼或詳細的技術支持,難於進行深入的涉及到組件底層的二次開發,因此仍然有相當多的客戶需要的功能無法實現。根據微軟一貫的商業策略,微軟未來不大可能提供比標準RichTextBox更強大的文本編輯器組件。

在已有文本編輯器組件無法滿足需求的情況下,開發者可以自己開發文本編輯器組件,但文本編輯器組件是相當高級的圖形軟件組件,涉及的軟件技術多,開發難度大,開發時間長,而且文本編輯器這樣的高級軟件是有賴於相當優秀的軟件開發者的全力開發,常規的人海戰術是無法完成這樣的開發任務。因此大量的開發者沒有能力或沒有時間開發自己的文本編輯器組件,這樣由於技術原因導致了一些商業機會的流失。

有鑑於此,XDesigner圖形軟件工作室經過長期潛心研究,成功的開發了XWriterLib文本編輯器組件,該組件首先是一個功能比較全的富文本編輯器,此外還特別根據軟件開發者的實際需要開放了非常靈活的全方位的編程接口,而且開發者經過授權可以獲得源代碼,可以進行深入的二次開發。在XWriterLib的基礎上開發自己的文本編輯器能避免複雜的圖形軟件編程,減少工作量,降低開發成本,並能迅速滿足客戶的需求。

XWriterLib介紹

XWriterLib是XDesigner圖形軟件工作獨立自主開發的富文本編輯器組件,具有完全自主知識產權,爲軟件開發者在微軟.NET平臺上的開發高度自定義的文本編輯器類軟件提供了堅實基礎。在XWriterLib的支持下,開發者可以獲得以下能力

  1. 比較輕鬆的開發專業的文本編輯器類軟件的能力。XWriterLib內部集成了富文本編輯器的基礎功能,封裝了所有的軟件細節,並提供了友好的編程接口,開發者無需很強的軟件開發能力就能輕鬆駕馭XWriterLib的強大功能,實現自己的文本編輯器。
  2. 可開發高度定製的文本編輯器類軟件的能力。XWriterLib除了實現一般的文本編輯器的功能外,還針對開發需求,提供了一個非常靈活的全方位的面向對象的編程接口,特別是提供了一個可擴展的富文本文檔對象模型,開發者可以在此基礎上實現自己的文本文檔功能。可以全方位的修改XWriterLib的功能,包括編輯時特性,排版特性,文檔保存格式,打印控制。此外還能新增自己的文檔元素類型,新增的文檔元素類型能無縫的融入到XWriterLib的文檔處理中。
  3. 深入進行二次開發的能力。開發者經過授權可以獲得XWriterLib的源代碼和技術支持,從而可進行深入的二次開發,能實現一些比較特殊的功能。比如可以實現文檔分級動態部分鎖定,文檔內容的邏輯刪除,自動執行精確的修改痕跡保留和查看,文檔的分散保存和加載,向其他應用系統開放文檔處理的WebService等功能,而這些功能是RichTextBox,MS Word等傳統文本編輯器組件難於或者不能實現的。
  4. 可在任何類型的軟件中快速高效的處理文檔的能力。在某些沒有圖形用戶界面且禁止訪問桌面的軟件中,比如ASP.NET或Windows服務等,常規的文本編輯器組件的使用受到限制,比如RichTextBox或基於IE瀏覽器組件的文本編輯器是不能運行的,而使用MS Word則會使用OLE自動化技術,這種技術很消耗系統資源,而且是不穩定的跨進程操作。而XWriterLib直接提供了文檔處理編程接口,開發者可以在ASP.NET程序或Windows服務中放心的使用XWriterLib來快速處理文檔,比如可以向其他軟件提供文檔視圖的快照圖片,打印輸出等。
  5. 和微軟.NET軟件無縫集成的能力。XWriterLib完全用C#開發,全部採用託管代碼來實現,因此可以和任何基於.NET平臺的軟件進行無縫集成,從而進行密切的協同工作。應用系統可以使用C#,VB.NET,C++.NET,DELPHI.NET或其他支持.NET的語言進行開發,但都可以輕鬆的調用XWriterLib。XWriterLib暫不支持MONO。
  6. 輕鬆部署的能力。XWriterLib是輕量級的文本編輯器組件,只依賴微軟.NET框架提供的標準類庫,不依賴任何其他第三方組件,所有的部分都包含在一個DLL文件中,這爲開發者部署應用軟件系統帶來相當的便利。

 

XWriterLib技術說明

XWriterLib涉及到了很多的計算機軟件開發技術,其中包含了不少高級開發技術,此處對其中的某些技術進行說明,方便開發者瞭解一些XWriterLib內部的技術細節,使得能更充分的調用XWriterLib的能力。

XWriterLib文檔對象模型

XWriterLib文檔對象模型(以下簡稱XDOM)是XWriterLib的核心模塊。它是一種針對富文本文檔而且充分考慮到二次開發需要的可擴展文檔對象模型。開發者可以操作這個文檔對象模型來操作XWriter文檔,也可以通過擴展它來向XWriter文檔添加新的文檔元素類型。

XDOM內部建立了一個樹狀結構來詳細描述文檔結構,包括文檔結構框架和各種細節信息,而且考慮到二次開發而開放了很豐富的編程接口,該接口的開放程度遠大於MS Word或RichTextBox的編程接口。開發者可以使用XDOM接口來訪問文檔中的任何信息,而且可以在標準的XDOM上面派生出自定義的文檔元素類型,新的文檔元素類型可以擴展或重新定義標準文檔元素的內容,圖形樣式和操作特性。

XDOM中比較重要的文檔元素類型有

XTextElement文檔元素基礎類型

本類型是文檔元素基礎類型,所有的文檔元素類型,包括XWriterLib中已經定義的文檔元素類型還是未來開發者自定義的元素類型,必須是直接或間接的從XTextElement繼承過來的。該類型定義了一些文檔元素的通用接口,還包括文檔元素在文檔中的位置大小等基本信息。開發者可以使用這種類型來遍歷文檔中任意對象。

該類型是抽象類型(在C#中爲 abstract 類型),因此不能實例化,只能從其上面派生出實際使用的文檔元素類型,派生的類型需要重載其中的某些成員,用於支持自己的繪製過程和操作特性。

XTextElementContainer 容器元素類型

本類型是直接從XTextElement上派生的元素類型,它內部能放置若干個其他的文檔元素,還能放置其他的容器元素。

XTextDocument 類型

本類型是從XTextElementContainer上派生的,用於表示文本文檔對象,是XDOM的頂級節點。它定義了整個文檔的一些信息,是外部程序訪問XDOM結構的入口點。

XTextElement,XTextElementContainer和XTextDocument三種類型共同構成了XDOM的基本框架,形成已一個已XTextDocument爲根節點的樹狀結構。外部程序以XTextDocument爲入口點來訪問整個XDOM。

 

在XDOM的基本框架上,XWriterLib還定義了一些常用的文檔元素類型,主要有

XTextChar字符類型

XTextChar文檔元素類型表示文檔中的某一個字符,包括空白字符,文檔中所有的字符都對應於一個XTextChar對象,因此應用程序可以使用XTextChar類型來快速而精確的訪問文檔中的任何字符,可以獲得和修改單個字符的顯示樣式,包括字體,顏色,上下標等設置。

XTextImage 圖片類型

XTextImage文檔元素類型表示文檔中的某個圖片,並支持鼠標拖拽來改變圖片大小。

XTextBookmark書籤元素類型

XTextBookmark書籤元素類型插入在文檔中的某個地方,用於用戶快速切換到書籤所在的文本部分。

XTextParagraph 段落元素,XTextParagraphEOF 段落結尾類型

XTextParagraph,XTextParagraphEOF段落元素表示文檔中的某個段落信息,XDOM中,每一個元素都屬於某個段落(除了段落元素本身),而且元素所屬的段落對象是隨着編輯操作而動態的改變,因此在編輯過程中,文檔對象的段落結構是動態的變化的,此時爲了方便開發,XDOM是以XTextParagraphEOF爲根據實時的構造出段落結構。

 

編程接口

XWriterLib的一個顯而易見的特點就是提供了一個全方位高度透明的編程接口,這個編程接口以XDOM爲核心,覆蓋了XWriterLib的方方面面。開發者使用這個編程接口,可以快速精確的訪問文檔中的任何部分任何元素,而且這個編程接口可以應用到任何類型的.NET程序中,包括WinForm.NET,ASP.NET,命令行程序,Windows服務程序等等。

使用這個編程接口,開發者還可以方便的擴展XWriterLib,可以自定義文檔元素類型,可以自定義文檔的保存格式,保存過程,可以添加各種編輯用戶體驗。

經過授權,開發者還可以獲得XWriterLib源代碼的拷貝,開發者可以在XWriterLib源代碼的基礎上幾乎不受限制的擴展XWriterLib的功能。

 

文檔排版特性

XDOM是一種文本文檔對象模型,因此其內容是採用流式排版樣式,即文檔元素根據先後順序按照從左到右從上到下進行排列,目前XDOM只支持從左到右從上到下的排列,不支持其他的流式排版樣式,比如不支持中東地區的從右到左從上到下的排列樣式。

當XWriterLib加載新的文檔時,會對整個文檔進行排版,對整個文檔計算文檔行,計算分頁,而當用戶編輯文檔而改變文檔內容時,XWriterLib會根據需要計算部分文檔的文檔行和分頁。這樣可以減少一次編輯操作導致的文檔排版工作量,提高編輯器響應用戶編輯操作的速度,還能減少編輯文檔時的用戶界面閃爍現象。

XWriterLib對文檔進行排版時,不是簡單的將文檔元素從左到右從上到下的進行排列,而是伴隨着相當多的規則,其排版過程主要有以下規則

  1. 按照約定成俗,某些字符不能出現文檔行首或行尾。不能出現在行首的字符稱爲後置標點,一般有“!),.:;?]}ǚˇˉD‖’”…∶、。〃々〉》」』】〕〗!"'),.:;?]`|}~¢”;不能出現在行尾的字符成爲前置標點,一般有“([{·‘“〈《「『【〔〖(.[{£¥”。XWriterLib在進行排版時,若一個文本行的第一個字符是後置標點,則需要將上一個文本行的最後一個字符提出來放置到當前處理的文本行中,於是上一個文本行內部需要重新排版;若文本行最後一個字符是前置標點,而且文本行沒有剩餘的空間容納下一個字符,則該文本行提前結束,將這個前置標點放置到下一個文本行中。
  2. 若文檔中存在一段連續英文字母(26個英文字母,包括大小寫)和阿拉伯數字字符,中間沒有其他字符或非字符文檔元素,則排版時將這段文字儘可能的安排到同一個文檔行,使得這段文本儘可能的保持一個整體而不分開,若文檔行剩餘的空間不足以容納這部分文本,則會提前換行,這會導致這個文本行出現了較大的空白區域。但在少數情況下,這段連續的字符長度超過的文檔的顯示寬度,則放棄該規則,仍然照常換行。
  3. 文檔右邊緣修正。文本行的寬度一般等於文檔的顯示寬度,是一個固定的值,而它包含的所有的文檔元素的顯示寬度之和卻是不固定的,元素寬度和不一定等於文本行的寬度,這樣導致文檔行的右邊緣看上去參差不齊,影響美觀。爲此需要修正文本行的右邊緣,XWriterlib的做法是將文本行寬度減去文檔元素寬度和所得的差,也就是文本行剩餘的寬度,儘量平均分攤到文本行中各個元素上頭,每一個元素都有一個顯示寬度的修正量,如此文本行實現了右邊緣修正,使得各個文本行的左右都對齊。
    若文本行元素個數比較多時,分攤到各個元素的寬度修正量比較小,則用戶一般不會察覺到這個寬度修正量,若文本行元素比較少時,則分攤到各個元素的寬度修正量比較大,則用戶會察覺到元素寬度修正量,此時文本行中的各個元素看起來非常鬆散。
    XWriterLib在進行文檔右邊緣對齊時還會考慮到連續的英文字母和阿拉伯數字字符,若文檔中有連續的英文字符和阿拉伯數字字符,則這些字符之間是不會插入元素寬度修正量,此時它們應當承擔的寬度修正量轉移到其他元素上,製表符也不接收寬度修正量。這樣處理也是考慮到文檔的美觀。
    若文本行只有一個文檔元素或者它的最後一個字符是換行符(軟回車和硬回車),則該文本行不進行右邊緣修正。

 

所見即所得的編輯界面

XWrtierLib實現了所見即所得的編輯界面,它將編輯界面和打印預覽界面集成在一起,編輯界面就是打印預覽界面。在XWriterLib文本編輯器中顯示的文檔樣式和實際打印輸出的樣式是完全一致的。用戶在編輯修改文檔的同時,XWriterLib會動態的對文檔進行排版和分頁操作,使得編輯界面一直和打印輸出樣式保持一致。XWriterLib內部採用各種優化算法,使得XWriterLib動態的保持這種所見即所得的能力而不影響用戶流暢的編輯文檔。

XWriterLib的所見即所得的功能是基於微軟.NET框架提供的圖形顯示和打印能力的。XWriterLib在計算文檔元素大小,排版和繪製文檔內容時是採用“System.Drawing.GraphicsUnit.Document”圖形度量單位,這種單位的刻度是1/300英寸,這是一種抽象的不依賴硬件的度量單位,因此XWriterLib就能在任意圖形輸出設備(包括顯示器,打印機)上面實現文檔準確的輸出。

當文檔顯示在計算機屏幕上,由於還需要支持編輯操作,需要響應用戶界面的鼠標鍵盤事件,而計算機屏幕是採用象素單位,象素單位是一種依賴硬件的度量單位,因此XWriterLib內部會進行這兩種單位的轉化,處理鼠標數據時需要將象素座標轉化爲文檔座標,在顯示文檔時還需要將文檔座標轉化爲象素座標。這種操作是相當複雜的,但它在XWriterLib內部自動完成的,開發者可以不用關心其中的具體算法。

XWriterLib還支持續打功能,當文本編輯器處於續打模式時,用戶使用鼠標點擊操作來設置續打位置,則文檔整體被續打位置分割成兩個部分,續打位置上面被藍色半透明區域覆蓋,而續打位置下面則是正常顯示。在實際打印輸出時,續打位置上方,也就是被半藍色透明區域覆蓋的部分文檔,無論其中包含文本,圖片或者自定義文檔元素,將不會打印輸出,只有續打位置下方的文檔部分纔會打印輸出,而且續打位置所在的那個文檔頁不會輸出頁眉和頁腳。續打是XWriterLib提供的一種很特殊的打印方式,比較適合某些日誌類型的文檔的打印,在某些應用中這種功能是必須的。

 

RTF文檔格式的支持

RTF文檔格式是一種應用非常廣泛的富文本文檔格式,XWriterLib支持RTF文檔格式,XWriterLib能加載和保存RTF文檔,將複製和粘貼RTF文檔片斷,還支持OLE拖拽將RTF文檔片斷從其他程序拖拽到正在編輯的文檔中。相對於標準的RichTextBox組件,XWriterLib增強了對RTF文檔的支持,能加載和保存某些標準RichTextBox不支持的文檔特性,比如文本背景色,對超鏈接更好的支持等等。

XWriterLib內部自行處理RTF文檔,不依賴其他組件來處理RTF文檔,XWriterLib內部實現了RTF文檔解析器和生成器,並將RTF的功能融入到XDOM中。

 

HTML文檔格式的支持

XWriterLib能將文檔輸出爲HTML格式的文檔,生成的HTML文檔代碼非常簡潔,符合國際標準,沒有垃圾代碼,輸出HTML文檔時還能將文檔中包含的圖片使用PNG格式一併輸出,因此能完整的輸出圖文並茂的文檔。

XWriterLib內部實現了HTML文檔生成器,因此XWriterLib能獨立的輸出HTML文檔,不依賴其他組件。

 

文檔的加載和保存

XWriterLib支持多種方式來加載和保存文檔。XWriterLib內部支持RTF格式,因此簡單的調用其接口來將文檔以RTF格式進行加載和保存。開發者也可以使用純文本格式來加載和保存無格式的文本內容。

XWriterLib內部使用一種XML序列化機制,能將文檔序列化爲XML文檔,也可從XML文檔反序列化生成文檔,因此開發者可以使用XML格式加載和保存文檔。

XWriterLib提供非常透明的編程接口,因此開發者可以直接遍歷訪問XDOM,獲得其中文檔包含的所有信息,然後自己設計文檔格式,將XWriterLib的文檔保存爲自定義格式,這種過程也可以設計成反向執行,從而能根據自定義文檔格式來加載文檔。這種自定義文檔格式可以是純文本的,XML或者二進制格式。

XWriterLib不限制文檔的保存格式,開發者可以將文檔保存在本地文件系統,保存到數據庫中,或者直接上傳到WEB服務器上;也可以從本地文件,數據庫,或者WEB服務器上來加載文檔。

 

和其他軟件的協同工作

XWriterLib支持OLE拖拽操作和Windows系統剪切板和其他軟件交流數據,從而實現協同工作。

XWriterLib支持OLE拖拽操作將數據拖拽插入到文檔中,支持多種數據格式。比如在Windows資源管理器中將一個擴展名爲 bmp,png,jpg,jpeg,gif,emf的文件拖拽到文檔中,則XWriterLib會將這個文件視爲圖片文件進行加載,若成功的加載圖片則在文檔中插入一個圖片元素。若拖拽的數據直接是BMP格式,則會在文檔中插入一個圖片元素,該元素顯示的圖片就是拖拽的BMP圖片。若拖拽的數據是RTF格式,則會解析該RTF數據,然後在文檔中插入一個RTF文檔片斷,因此可以從Word拖拽一個文檔片斷到XWriterLib的文檔中。若拖拽的數據是純文本數據,則會根據這段純文本在文檔中插入一段文本內容。

XWriterLib支持系統剪切板來獲得文檔數據。比如在Windows資源管理器中複製一個擴展名爲 bmp,png,jpg,jpeg,gif,emf的文件,則在XWriterLib粘貼時會在文檔插入一個圖片元素,當剪切板中就是一個BMP圖片時,則粘貼操作會在文檔中插入一個圖片元素。當剪切板中是一個RTF文檔片斷時,則粘貼操作會在文檔中插入一段RTF文檔。若剪切板中是純文本數據,則粘貼操作會在文檔中插入一段純文本內容。

XWriterLib支持向系統剪切板設置數據。XWriterLib 會將文檔中的選中部分的純文本數據和RTF數據同時保存到系統剪切板中。這樣其他軟件可以使用不同版本的數據,比如記事本等純文本編輯器能粘貼其中的純文本數據,與此同時MS Word 能粘貼其中的RTF文檔數據。

 

運行環境

XWriterLib運行環境如下

操作系統 Windows2000WindowsXP或者更高版本

微軟.NET框架,版本1.1或更高版本

需要鼠標的支持。

 

開發語言支持

VB.NETC#或其他支持微軟.NET平臺的開發語言。

 

版權說明

XWriterLib沒有使用任何開源代碼,所有程序設計和編程完全由袁永福獨立完成的,具有完全的自主知識產權。請尊重作者的知識產權,請不要盜版,破解和反編譯本軟件。請支持國產原創軟件。想了解詳細信息請訪問 http://xdesigner.cnblogs.com 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章