亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Web 的Word 文檔管理系統(tǒng)設(shè)計(jì)

        2016-06-17 19:26:50何怡璇熊棠
        電腦知識(shí)與技術(shù) 2016年11期
        關(guān)鍵詞:文本

        何怡璇++熊棠

        摘要:在Windows系統(tǒng)中,使用Ruby on Rails 4框架設(shè)計(jì)一個(gè)基于Web的word文檔管理系統(tǒng)。系統(tǒng)具有在線預(yù)覽、全文檢索、版本控制、文本比較和可控下載等功能。

        關(guān)鍵詞:word;文檔管理;Ruby on Rails 4

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)11-0053-03

        企業(yè)日常運(yùn)營(yíng)中會(huì)大量使用到電子文檔,一般以微軟word文檔、excel文檔、圖片、音視頻等形式存在;其中word文檔應(yīng)用范圍廣泛、數(shù)量巨大。從內(nèi)容上說,包括商務(wù)合同、會(huì)議記錄、產(chǎn)品手冊(cè)、客戶資料、設(shè)計(jì)文檔、推廣文案、競(jìng)爭(zhēng)對(duì)手資料、項(xiàng)目文檔、心得等。為了有效地存儲(chǔ)、管理大量的文檔,文檔管理系統(tǒng)應(yīng)運(yùn)而生。一個(gè)實(shí)用性的文檔管理系統(tǒng),應(yīng)具有在線預(yù)覽、全文檢索、版本控制、文本比較和可控下載等功能;其余如訪問控制、加密存儲(chǔ)、在線協(xié)作等不是本文討論的重點(diǎn)。

        在Windows系統(tǒng)中,使用Ruby on Rails 4框架(以下簡(jiǎn)稱RoR4),配合第三方軟件設(shè)計(jì)一個(gè)基于Web的word文檔管理系統(tǒng),使其具有上述功能。

        1 軟件

        為了實(shí)現(xiàn)前述功能,除RoR4產(chǎn)品環(huán)境所需的必要軟件外,還需安裝以下軟件。

        1.1 DocToText

        DocToText是一個(gè)跨平臺(tái)的命令行工具,支持把DOC、RTF和DOCX等格式轉(zhuǎn)換為UTF-8編碼的純文本。將DocToText.exe保存到服務(wù)器,并將所在路徑添加到系統(tǒng)環(huán)境變量Path中即可。命令格式如下:

        doctotext [文件名] >> [文本文件]

        [文本文件]中的內(nèi)容即為獲取的純文本內(nèi)容。

        1.2 Beyond Compare 4

        Beyond Compare 4是一款商業(yè)軟件(以下簡(jiǎn)稱BC4),主要用于文件,文本的比較;支持doc、docx、pdf、html等文件,目前最新版本為4.1.5。BC4還支持命令行操作,將安裝路徑添加到系統(tǒng)環(huán)境變量Path中后,即可使用BCompare命令對(duì)兩個(gè)文件進(jìn)行比較;比較完成后會(huì)生成一個(gè)html文件用以存儲(chǔ)及現(xiàn)實(shí)比較結(jié)果。命令格式如下:

        BCompare.exe /silent @[參數(shù)文件] [文件1] [文件2] [輸出網(wǎng)頁文件]

        1.3 word2pdf

        word2pdf是一款免費(fèi)軟件,能夠批量將doc、docx、rtf、txt和htm文件轉(zhuǎn)換為pdf文件。word2pdf還支持命令行操作,將安裝路徑添加到系統(tǒng)環(huán)境變量Path中后,即可使用word2pdf.exe命令進(jìn)行命令行下的批量轉(zhuǎn)換。命令格式如下:

        word2pdf.exe /source "[文件1]" "[文件2]" "[文件3]" /target "[輸出路徑]"

        1.4 ImageMagick

        ImageMagick是一個(gè)跨平臺(tái)的、用于圖像處理的軟件包,能對(duì)多種格式的圖片進(jìn)行讀寫操作[1],能夠把pdf文件轉(zhuǎn)換為圖片。

        1.4.1 Ghostscript

        Ghostscript是PDF和PostScript語言的解釋器[2]。ImageMagick轉(zhuǎn)換pdf文件時(shí)需要調(diào)用到它。直接下載安裝即可,目前最新版本為9.19。

        1.4.2 安裝并配置ImageMagick

        根據(jù)系統(tǒng)情況下載合適的ImageMagick并默認(rèn)安裝。在Windows系統(tǒng)中,convert是系統(tǒng)內(nèi)置命令,和ImageMagick的命令沖突,所以要人工修改。進(jìn)入ImageMagick安裝目錄,將convert.exe重命名,如IMconvert.exe。打開注冊(cè)表編輯器,搜索ImageMagick安裝目錄,如“C:\Program Files\ImageMagick-6.9.3-Q16”,將搜索到的名為AutoRun的鍵,值改為修改后的程序路徑,如“C:\Program Files\ImageMagick-6.9.3-Q16\IMconvert.exe $*”。

        使用ImageMagick將pdf文件轉(zhuǎn)換為jpg等圖片時(shí),會(huì)按頁轉(zhuǎn)換。即在PDF中的一頁對(duì)應(yīng)一張圖片,圖片以數(shù)字后綴的形式排列,后綴0表示第一頁。命令格式如下:

        IMconvert -density [分辨率] [pdf文件][頁碼范圍] [jpg文件]

        分辨率即圖片的DPI,普通圖片72即可,如果對(duì)清晰度要求較高,或有較多文字,建議設(shè)置為150,如果有大幅打印需求,可以設(shè)置為300或更高。

        頁碼范圍可缺省,缺省時(shí)表示整個(gè)文件;頁碼0表示第一頁,支持逗號(hào)分隔及連字符,如[0-3,12-25,29]。

        jpg文件為輸出文件名,當(dāng)pdf文件多頁輸出時(shí),輸出圖片自動(dòng)添加連字符頁碼作為新的文件名,如“output-0.jpg”、“output-1.jpg”。

        1.5 前端插件

        1.5.1 PDF.js

        PDF.js 是Mozilla實(shí)驗(yàn)室開發(fā)的關(guān)于HTML5技術(shù)的一個(gè)開源項(xiàng)目,用于在網(wǎng)頁上顯示PDF文檔,而不需要任何瀏覽器插件等原生代碼[3]。代碼托管于GitHub,需要獲取源碼并構(gòu)建到本地。也可以直接下載第三方編譯好的項(xiàng)目,直接拷貝到服務(wù)器目錄中使用。在RoR4項(xiàng)目中,也可以通過安裝pdfjs-rails這個(gè)Gem來實(shí)現(xiàn),后述即基于此方法。

        1.5.2 FlippingBook

        FlippingBook是一款收費(fèi)的圖書翻頁效果的插件,包含swf和js文件??梢允褂脠D片創(chuàng)造出翻頁書本的效果。

        2 數(shù)據(jù)結(jié)構(gòu)

        在RoR4項(xiàng)目的模型中做如下定義:

        2.1 Doc類

        Doc表示一個(gè)文檔,屬性title為文檔的標(biāo)題,應(yīng)據(jù)有全局唯一性;另還應(yīng)有屬性定義文檔的狀態(tài)、分類、歸屬、訪問權(quán)限、文檔說明等。

        2.2 Edition類

        Edition表示一個(gè)具體的文件,與存儲(chǔ)在硬盤中的word文件是一一對(duì)應(yīng)的。屬性path為文件的存儲(chǔ)路徑,一個(gè)word文件獨(dú)占一個(gè)存儲(chǔ)路徑;屬性version為文件的版本號(hào);屬性text為文件的純文本內(nèi)容;另還應(yīng)有屬性定義文件的上傳者、上傳時(shí)間等。

        2.3 Doc與Edition的關(guān)系

        一個(gè)Doc實(shí)例可以包含一個(gè)或多個(gè)Edition實(shí)例,一個(gè)Edition實(shí)例必屬于一個(gè)Doc實(shí)例。

        3 word文檔預(yù)處理

        word文件通過上傳組件上傳時(shí)及成功后,需要做一些預(yù)先處理。

        3.1 文檔識(shí)別

        客戶端word文件通過瀏覽器上傳,文件上傳類根據(jù)上傳時(shí)間生成一個(gè)全局唯一的無序字符串@path,作為該文件的工作路徑;生成路徑@path,同時(shí)生成word、text、pdf、jpg四個(gè)子目錄;word文件保存在該路徑下的word目錄中,文件名為字符串“uploaded.doc”或“uploaded.docx”。文件上傳類返回文件路徑、文件尺寸、原文件名等信息。對(duì)原文件名進(jìn)行文本處理,去除擴(kuò)展名、時(shí)間標(biāo)簽等可以預(yù)見的干擾字符后得到字符串_title,數(shù)據(jù)庫中搜索title屬性等于_title的Doc實(shí)例,如果返回結(jié)果長(zhǎng)度為0,則新建一個(gè)Doc實(shí)例@doc,title值為_title;如果返回一個(gè)長(zhǎng)度為1的對(duì)象@docs,則將@doc賦值為@docs[0];如果@docs長(zhǎng)度超過1,則進(jìn)入異常警告。

        如無異常,新建一個(gè)Edition實(shí)例@edition,@edition屬于@doc。@edition.path的值為@path;@edition的version值為@doc的所有edtion對(duì)象個(gè)數(shù)加一,即@edition.version = @doc. editions.size + 1 。

        3.2 獲取文本

        使用docToText工具獲取word文件的純文本內(nèi)容。原理是使用Ruby的system方法調(diào)用命令行工具,后述所有命令行調(diào)用均基于此方法。腳本為_status = system(_cmd);_cmd是字符串類型的變量,其值即為需運(yùn)行的命令;_status是布爾類型的變量,表示運(yùn)行是否成功。首先針對(duì)@edition對(duì)象構(gòu)建_cmd:

        _cmd = 'docToText ' + @edition.path + '/word/uploaded.doc' + ' >>' + @edition.path + '/text/uploaded.txt'

        system執(zhí)行后,即在@path/text目錄下生成文件uploaded.txt,再使用Ruby的File類將uploaded.txt內(nèi)容讀出,賦值給@edition.text即可,具體腳本不再贅述。

        3.3 生成pdf文件

        生成pdf文件的原理同上,使用system方法調(diào)用命令行工具word2pdf,從word文件生成pdf文件,具體腳本不再贅述。生成的pdf文件位于@path/pdf目錄中,文件名為uploaded.pdf。

        3.4 生成分頁圖片

        原理同上,調(diào)用ImageMagick的IMconvert工具由uploaded.pdf文件生成分頁圖片,存儲(chǔ)在@path/jpg目錄中,文件名為uploaded[-頁碼].jpg格式。

        4 主要功能

        4.1 在線預(yù)覽

        實(shí)現(xiàn)在線預(yù)覽有兩種方式,一是PDF.js展示uploaded.pdf文件;二是flash或js展示分頁圖片。

        4.1.1 展示pdf文件

        使用pdfjs-rails可以很便捷地生成pdf預(yù)覽,在視圖文件中使用如下腳本即可:

        <%= pdf_viewer @pdf_url %>

        @pdf_url即pdf文件的路徑。pdfjs-rails會(huì)自動(dòng)生成PDF.js腳本,PDF.js在展示pdf文檔時(shí)還原精確、功能強(qiáng)大且不再需要其他插件支持。但是有兩個(gè)問題:一是PDF.js運(yùn)行在HTML5平臺(tái)上,不支持HTML5的瀏覽器無法運(yùn)行。二是客戶端可以復(fù)制pdf文檔中的純文本,不利于內(nèi)容保護(hù)。

        4.1.2 展示分頁圖片

        另一個(gè)思路是使用flash或js加載分頁圖片創(chuàng)建書籍效果,可以規(guī)避前述兩個(gè)問題。FlippingBook是一款優(yōu)秀的圖書翻頁效果flash插件,可以自由靈活的設(shè)置導(dǎo)航、尺寸、顏色、背景音樂等參數(shù),以實(shí)現(xiàn)不同的瀏覽效果;FlippingBook是一款收費(fèi)軟件,免費(fèi)版只能載入10張圖片。也可以選擇其他flash或js插件實(shí)現(xiàn)類似效果。

        另外,還可以使用flash插件展示pdf文件,或?qū)df文件轉(zhuǎn)化成swf文件再由FlexPaper來做前端展示,由于沒有明顯優(yōu)勢(shì),此處不做詳細(xì)說明。

        4.2 全文檢索

        在3.2小節(jié)中已獲得了純文本內(nèi)容并存儲(chǔ)在text屬性中,因此很容易使用RoR4的SQL查詢功能實(shí)現(xiàn)全文檢索。全文檢索會(huì)消耗大量服務(wù)器資源,可采用以下方法提高檢索效率,降低負(fù)載:

        第一、 對(duì)常用關(guān)鍵字及其檢索結(jié)果建立數(shù)據(jù)緩存,即把全文檢索轉(zhuǎn)換為關(guān)鍵字檢索;

        第二、 在客戶端采用AJAX異步載入部分檢索結(jié)果,每次只進(jìn)行有限次數(shù)的后臺(tái)檢索。

        4.3 版本控制

        在數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)時(shí),已將Doc與Edition分開,Doc對(duì)應(yīng)一個(gè)文檔,Edition對(duì)應(yīng)一個(gè)具體的word文件,一個(gè)Doc可以對(duì)應(yīng)多個(gè)Edition。這種結(jié)構(gòu)可以很容易的做到版本控制。一個(gè)word文件在上傳的時(shí)候被歸屬到一個(gè)文檔,并且自動(dòng)生成版本號(hào)。在Edition的屬性里面可以記錄上傳者,上傳時(shí)間,簡(jiǎn)要說明與上一版的差別等。一個(gè)文檔在歸檔時(shí)可以將定版以外的其余版本清除,以節(jié)省空間。

        4.4 文本比較

        可采用Beyond Compare 4命令行工具對(duì)兩個(gè)文件進(jìn)行文本比較。經(jīng)過預(yù)處理,一個(gè)文件有word、txt、pdf、jpg圖片4種存在形式。經(jīng)測(cè)試得出如下結(jié)論:

        第一、 比較doc文件的準(zhǔn)確率較高,比較docx文件結(jié)果不準(zhǔn)確;

        第二、 比較txt文件準(zhǔn)確率較高,但格式差異無法比較;

        第三、 比較pdf文件準(zhǔn)確率較高,格式變化也能反映出來;

        第四、 無法正常比較jpg圖片。

        因此,選用pdf文件作為比較對(duì)象。首先要建立靜態(tài)文件BCconfig.txt,完整路徑記為_BCconfig,用來定義配置腳本,基本配置如下:

        file-report layout:side-by-side &

        options:ignore-unimportant,display-context,line-numbers &

        output-to:%3 output-options:html-color,wrap-word %1 %2

        其次要建立輸出文件,BCompare工具不能新建文件,使用Ruby的File類新建一個(gè)HTML文件作為輸出文件。所有輸出文件可以放到一個(gè)目錄中,文件名為作比較的兩個(gè)@edition.path連接而成,形如1eu98y-2dg38k.html;文件路徑記為_result_path。

        第三要生成命令行字符串。記被比較的兩個(gè)文件路徑分別為_pdf_1、_pdf_2,命令格式如下:

        BCompare /silent /solo @_BCconfig _pdf_1 _pdf_2 _result_path

        silent參數(shù)表示靜默運(yùn)行,solo參數(shù)表示新建一個(gè)BCompare會(huì)話實(shí)例。最后用system方法調(diào)用即可。通過展示結(jié)果文件,即可獲得比較結(jié)果。存儲(chǔ)的結(jié)果文件可以多次使用,不需要每次都重新比較;也可以讀出其內(nèi)容儲(chǔ)存在數(shù)據(jù)庫中,以避免目錄下文件過多降低性能。

        4.5 可控下載

        在RoR4中,較成熟的可控下載方案是采用Apache的xsendfile下載機(jī)制。通過服務(wù)器端程序判斷下載請(qǐng)求是否合法,接受合法請(qǐng)求打開相應(yīng)文件,讀取文件內(nèi)容并發(fā)送給客戶端[4]。發(fā)送文件時(shí),后端并不直接讀取文件,而是在 X-Sendfile 頭中指定一個(gè)文件的地址來通告前端web服務(wù)器。當(dāng)web服務(wù)器檢測(cè)到后端發(fā)送的這個(gè)header后,它將忽略后端的其他輸出[4],而將文件發(fā)送給客戶端。并且,X-Sendfile屬性不會(huì)被發(fā)送給客戶端,文件路徑得到了保護(hù)。[4]具體實(shí)現(xiàn)方法不再贅述。

        5 結(jié)束語

        通過上述設(shè)計(jì),文檔管理系統(tǒng)實(shí)現(xiàn)了在線預(yù)覽、全文檢索、版本控制、文本比較和可控下載等功能。需要注意的是,本文涉及的第三方軟件中有多個(gè)商業(yè)軟件,使用時(shí)需注意版權(quán)問題。

        參考文獻(xiàn):

        [1] ImageMagick Studio LLC.ImageMagick: Convert, Edit, Or Compose Bitmap Images[EB/OL]. [2016-03-09].http://www.imagemagick.org/script/index.php.

        [2] Artifex Software. Ghostscript[EB/OL]. [2016-03-09]. http://ghostscript.com.

        [3] Mozilla Labs. pdf.js/README.md at master· mozilla/pdf.js· GitHub[EB/OL]. [2016-03-09].https://github.com/mozilla/pdf.js/blob/master/README.md.

        [4] 熊棠, 唐勇. Windows平臺(tái)下xsendfile下載機(jī)制的實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2014, 10(32), 7619-7656.

        猜你喜歡
        文本
        文本聯(lián)讀學(xué)概括 細(xì)致觀察促寫作
        重點(diǎn):論述類文本閱讀
        重點(diǎn):實(shí)用類文本閱讀
        初中群文閱讀的文本選擇及組織
        甘肅教育(2020年8期)2020-06-11 06:10:02
        作為“文本鏈”的元電影
        在808DA上文本顯示的改善
        “文化傳承與理解”離不開對(duì)具體文本的解讀與把握
        基于doc2vec和TF-IDF的相似文本識(shí)別
        電子制作(2018年18期)2018-11-14 01:48:06
        文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
        從背景出發(fā)還是從文本出發(fā)
        久久国产精品美女厕所尿尿av| 精品亚洲日韩国产一二三区亚洲| 日本熟妇hd8ex视频| 亚洲精品中文字幕熟女| 夜夜爽夜夜叫夜夜高潮| 男女爱爱好爽视频免费看| 亚洲国产夜色在线观看| 久久色悠悠亚洲综合网| 中文字幕成人乱码熟女精品国50| 中文字幕人妻被公上司喝醉| 无遮挡网站| 国产在线看不卡一区二区| 国产自拍视频免费在线| 久久久日韩精品一区二区三区| 免费的一级毛片| 狠狠久久av一区二区三区| 久久精品国产亚洲夜色av网站| 亚洲处破女av日韩精品| 色综合久久精品中文字幕| 中文字幕文字幕视频在线| 国产精品久久久亚洲| 国产av无码专区亚洲av| 亚洲AⅤ乱码一区二区三区| 高潮内射主播自拍一区| 亚洲国产精华液网站w| 成人毛片18女人毛片免费| 一区二区三区视频偷拍| 插鸡网站在线播放免费观看| 国产精自产拍久久久久久蜜| 高潮社区51视频在线观看| 亚洲av毛片在线网站| 无码一区二区三区亚洲人妻| 久久精品国产热| 亚洲av色香蕉一区二区三区av| 日日拍夜夜嗷嗷叫国产| 久久亚洲国产精品成人av秋霞| 我和丰满老女人性销魂| 亚洲成av人片女在线观看| 天躁夜夜躁狼狠躁| 欧美h久免费女| 91精品人妻一区二区三区久久久|