一種消息驅(qū)動的多類型文件預(yù)覽系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件處理技術(shù)領(lǐng)域,尤其涉及一種消息驅(qū)動的多類型文件預(yù)覽系統(tǒng)。
【背景技術(shù)】
[0002]隨著計算機技術(shù)和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)上文件的種類越來越多,資料共享的需求也越來越多,以往用戶從互聯(lián)網(wǎng)上獲取文件,需要自己判斷文件類型,然后安裝專業(yè)的瀏覽軟件,才能打開各種不同類型的文件,而各種專業(yè)軟件獲取不宜,體積龐大,價格不菲,給用戶帶來了很大的困擾。
[0003]網(wǎng)易有道信息技術(shù)(北京)有限公司在2006年10月08日申請的專利號為200610113599.5的專利中提出了“一種基于搜索引擎的搜索結(jié)果快速預(yù)覽裝置”,但是這種預(yù)覽系統(tǒng)只能預(yù)覽網(wǎng)頁內(nèi)容,無法適應(yīng)快速發(fā)展的互聯(lián)網(wǎng)環(huán)境下出現(xiàn)的各種類型文件的預(yù)覽要求;國云科技股份有限公司在2013年12月29日申請的專利號為201310743351.7的專利中提出了“一種文件在線預(yù)覽方法”,以及深圳市遠(yuǎn)行科技有限公司在2012年07月06日申請的專利號為201210233929.X的專利中提出了“一種基于Hadoop分布式文件預(yù)覽方法及其系統(tǒng)”,這種對于Office文檔類文件的預(yù)覽,一般使用WPS或者OpenOffice來實現(xiàn)Office文檔到PDF文檔的轉(zhuǎn)換,從而會帶來Microsoft Office文檔預(yù)覽體驗差和格式公式顯示錯誤等一系列問題,且這種只針對文檔類文件預(yù)覽,也無法適應(yīng)快速發(fā)展的互聯(lián)網(wǎng)環(huán)境下出現(xiàn)的各種類型文件預(yù)覽要求,而對于使用市場占有率最高的Microsoft Office來實現(xiàn)預(yù)覽轉(zhuǎn)換,現(xiàn)有技術(shù)還不能達到這樣的要求,即使達到要求,所花費的成本也很高昂。
[0004]此外,深圳市中博科創(chuàng)信息技術(shù)有限公司在2014年05月12日申請的專利號為201410199197.6的專利中提出的“一種預(yù)覽文件的方法及文件處理系統(tǒng)”,其基于FLASH的文件預(yù)覽是將文件轉(zhuǎn)換為SWF文件格式,由于SWF文件轉(zhuǎn)換的速度也相對緩慢,極大地影響了預(yù)覽系統(tǒng)的效率。
[0005]特別地,現(xiàn)有預(yù)覽系統(tǒng)多用OpenOffice或者WPS之類的第三方廠商的API進行Office文檔的預(yù)覽,而這種方式預(yù)覽方式無法準(zhǔn)確展示復(fù)雜圖表和數(shù)學(xué)公式等高級內(nèi)容,且對于CAD文件、POSTSCRIPT文件和EPS文件等專業(yè)文件還不存在任何預(yù)覽平臺,用戶必須先安裝龐大的專業(yè)軟件才能打開查看,使用起來不是很方便。
[0006]總之,現(xiàn)有技術(shù)中對于預(yù)覽各種文件需要先安裝對應(yīng)的專業(yè)文檔瀏覽器,才可預(yù)覽文檔內(nèi)容,極大不方便用戶使用,同時也會花費用戶很多不必要的時間和精力。
【發(fā)明內(nèi)容】
[0007]針對現(xiàn)有技術(shù)中的不足,本發(fā)明提供了方便用戶使用,節(jié)約用戶時間和精力的一種消息驅(qū)動的多類型文件預(yù)覽系統(tǒng)。
[0008]為了實現(xiàn)上述目的,本發(fā)明所采取的技術(shù)方案是:
一種消息驅(qū)動的多類型文件預(yù)覽系統(tǒng),包括
觸發(fā)組件:用于受到用戶的源文件預(yù)覽請求信息觸發(fā)時,將請求信息轉(zhuǎn)換為預(yù)覽請求消息,并發(fā)送到消息隊列,所述源文件格式包括DOC,DOCX, ODT, RTF,XLS, XLSX, ODS, TSV,CSV, PPT, PPTX, ODP, PSD,PDF,PNG,JPG, JPEG,GIF,TIF,TIFF, BMP,SVG, AIX,ICO,MARKDOWN,MD,MDOWN, PS, Al,EPS,HTML,XHTML, HTM,AS,AS3,ASM,BAT,C,CC, CMAKE, CPP, CS,CSH,CSS, CXX, DIFF, ERB, GROOVY, H,HAML, HH, JAVA, JS, LESS,M,MAKE, ML,MM,PHP, PL, PLIST,PROPERTIES, PY, RB,SASS, SCALA, SCM,SCRIPT,SH, SML, SQL,TXT,VI,VIM, XML, XSD, XSL,XSLT, YAML, DWG,DffF, DXF等文件格式,用戶預(yù)覽請求可以包含多個目標(biāo)格式;
消息隊列:用于將接收到的預(yù)覽請求信息持久化保存,避免請求信息丟失;
Linux集群:用于監(jiān)聽消息隊列的預(yù)覽請求消息,再將預(yù)覽請求消息的源文件轉(zhuǎn)換成預(yù)覽文件,所述預(yù)覽文件格式為PDF和JPG,所述Linux集群由至少2臺Linux服務(wù)器組成,所述Linux服務(wù)器包括任務(wù)分發(fā)組件、任務(wù)解析組件和文件轉(zhuǎn)換組件。任務(wù)分發(fā)組件用于監(jiān)聽到消息隊列的預(yù)覽請求信息,將預(yù)覽請求信息發(fā)給任務(wù)解析組件,其中所述任務(wù)分發(fā)組件可以根據(jù)需求配置同時處理的任務(wù)數(shù),從而進行并發(fā)流量控制;任務(wù)解析組件用于將來自任務(wù)分發(fā)組件的預(yù)覽請求消息解析成一個對應(yīng)的文件轉(zhuǎn)換列表,通過文件轉(zhuǎn)換列表中的順序依次調(diào)用文件轉(zhuǎn)換組件中相應(yīng)的具體轉(zhuǎn)換組件,將源文件轉(zhuǎn)換成預(yù)覽文件,當(dāng)所有轉(zhuǎn)換任務(wù)完成后通過任務(wù)分發(fā)組件將對應(yīng)的預(yù)覽文件發(fā)送給預(yù)覽展示組件進行展示預(yù)覽,其中任務(wù)解析組件采用樹形結(jié)構(gòu)進行預(yù)先配置,從原始文件到某種目標(biāo)文件所需的轉(zhuǎn)換步驟為樹形結(jié)構(gòu)中的一條路徑,多種格式轉(zhuǎn)換的路徑合并成一顆轉(zhuǎn)換任務(wù)樹,當(dāng)任務(wù)解析組件收到預(yù)覽請求消息后,根據(jù)最小生成樹算法,從預(yù)先配置的樹形任務(wù)鏈中生成包含所有預(yù)覽目標(biāo)的最小的子樹,最后通過廣度遍歷子樹生成對應(yīng)的文件轉(zhuǎn)換任務(wù)隊列,再使用同步機制依次調(diào)用文件轉(zhuǎn)換組件中相對應(yīng)的具體轉(zhuǎn)換組件,從而完成對應(yīng)的文件格式轉(zhuǎn)換,例如當(dāng)一個任務(wù)完成后再進行下一個轉(zhuǎn)換任務(wù),其中任務(wù)解析組件支持基于時間窗口的轉(zhuǎn)換失敗重試機制即任務(wù)失敗后進行重試,在一定時間內(nèi)失敗次數(shù)大于某個配置項,則認(rèn)為轉(zhuǎn)換失敗,同時任務(wù)解析組件也支持部分任務(wù)成功,當(dāng)某個文件轉(zhuǎn)換請求重試失敗后對其轉(zhuǎn)換任務(wù)樹進行剪枝,所有失敗任務(wù)的子節(jié)點全部從文件轉(zhuǎn)換消息隊列中清除,并將相應(yīng)的預(yù)覽目標(biāo)標(biāo)記為失敗,同時保留剩余的轉(zhuǎn)換任務(wù),繼續(xù)進行轉(zhuǎn)換;文件轉(zhuǎn)換組件有多種具體類型,用于將源文件轉(zhuǎn)換成預(yù)覽文件或者中間格式文件,從而可以在預(yù)覽展示組件中進行預(yù)覽,當(dāng)所有轉(zhuǎn)換完成后通過任務(wù)分發(fā)組件將對應(yīng)的預(yù)覽文件發(fā)送給預(yù)覽展示組件進行展示預(yù)覽,并且文件轉(zhuǎn)換組件在開始格式轉(zhuǎn)換前會首先檢測文件內(nèi)容,從而可以過濾掉內(nèi)容與擴展名不匹配的文件,避免惡意攻擊而影響系統(tǒng)穩(wěn)定性,文件轉(zhuǎn)換組件中多種具體類型有 D0C->PDF,D0CX->PDF,0DT_>PDF,RTF_>PDF,XLS_>PDF,XLSX_>PDF,0DS_>PDF,TSV->PDF, CSV->PDF, PPT_>PDF, PPTX_>PDF, 0DP_>PDF, PSD_>JPG, PDF_>JPG, PNG_>JPG,JPG->JPG, JPEG->JPG, GIF_>JPG, TIF_>JPG, TIFF_>JPG, BMP_>JPG, SVG_>JPG, AIX_>JPG,I⑶->JPG, MARKD0WN->HTML, MD_>HTML, MD0ffN->HTML, PS_>JPG, AI_>JPG, EPS_>JPG,HTML->PDF,XHTML->PDF,HTM_>PDF,AS_>HTML,AS3_>HTML,ASM_>HTML,BAT_>HTML,C_>HTML,CC->HTML, CMAKE->HTML, CPP_>HTML, CS_>HTML, CSH_>HTML, CSS_>HTML, CXX_>HTML,DIFF->HTML, ERB_>HTML, GR00VY_>HTML, H_>HTML, HAML_>HTML, HH_>HTML, JAVA->HTML,JS->HTML,LESS->HTML,M_>HTML,MAKE_>HTML,ML_>HTML,MM_>HTML,PHP_>HTML,PL_>HTML,PLIST->HTML, PROPERTIES->HTML, PY_>HTML, RB_>HTML, SASS_>HTML, SCALA_>HTML,SCM->HTML, SCRIPT->HTML, SH_>HTML, SML_>HTML, SQL_>HTML, TXT_>HTML, VI_>HTML,VIM->HTML, XML->HTML, XSD_>HTML, XSL_>HTML, XSLT_>HTML, YAML_>HTML, DffG->JPG,DffF->JPG, DXF->JPG等等,并支持靈活配置,隨時增減;
Windows集群:用于在受到Linux集群預(yù)覽請求消息觸發(fā)時將Office文檔轉(zhuǎn)換成F1DF類型預(yù)覽文件,所述Windows集群由至少2臺Windows服務(wù)器組成,Windows服務(wù)器包括消息監(jiān)聽組件、工作狀態(tài)組件、任務(wù)執(zhí)行組件、Offi ce文件轉(zhuǎn)換組件、橋接DLL組件、Offi ce轉(zhuǎn)換DLL組件和共享目錄組件,所述Office文件轉(zhuǎn)換組件依次通過橋接DLL組件和Office轉(zhuǎn)換DLL組件最終調(diào)用Microsoft Office Interop API把共享目錄中的源文件轉(zhuǎn)換為目標(biāo)文件,Windows集群的共享目錄組件與Linux集群通過CIFS協(xié)議方式進行文件共享,Windows集群的消息監(jiān)聽組件和Linux集群通過Akka Remote Actor機制進行消息交換。消息監(jiān)聽組件與Linux服務(wù)器進行通訊,消息監(jiān)聽組件用于接收來自Linux服務(wù)器的心跳消息以及預(yù)覽請求消息,消息監(jiān)聽組件分發(fā)任務(wù)消息給任務(wù)執(zhí)行組件,同時消息監(jiān)聽組件發(fā)送心跳消息和預(yù)覽文件消息給Linux服務(wù)器;其中工作狀態(tài)組件用