<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0

    http://blog.csdn.net/chinull/archive/2010/04/19/5503397.aspx

    這個是DotNet動態(tài)模擬的實現(xiàn)頁面:http://download.csdn.net/source/2153964

    文庫系統(tǒng)已經(jīng)開發(fā)完成了,包括上傳,動態(tài)轉(zhuǎn)換,以及符合百度文庫的資源文件的生成,打分,統(tǒng)計,收藏等功能

    (由于項目的關(guān)系不能公開項目代碼,當(dāng)前示例,僅包含顯示,不包含數(shù)據(jù)庫,上傳,動態(tài)轉(zhuǎn)換,資源文件生成等內(nèi)容)

    這里就簡單的介紹一下整個流程及原理。

    首先,反編譯 百度文庫Flash瀏覽器用的軟件是Sothink SWF Decompiler,不過你會發(fā)現(xiàn)反編譯的代碼還是有很多錯誤的;當(dāng)然您可以逐步將代碼進行修改,以達到使用的需要(這里我僅僅是使用這個Flash本 身,采用反編譯器僅為分析文庫資源文件格式)。

    其次,需要通過Flash的代碼分析百度文庫動態(tài)裝載的資源文件的文件格式 ,在文件DocViewer.as中事件響應(yīng)函數(shù)binaryLoadComplete中,仔細讀這一段您就可以分析清楚百度文庫的資源文件格式了,這里 我就不完整的敘述了。

    copy to clipboardprint?
    1. private function binaryLoadComplete(event:Event = null) : void  
    2. {  
    3.     var _loc_11:ByteArray = null;  
    4.     var _loc_12:int = 0;  
    5.     trace("binaryLoadComplete...");  
    6.     if (this._noDoc)  
    7.     {  
    8.         if (this._noDoc.parent)  
    9.         {  
    10.             this._noDoc.parent.removeChild(this._noDoc);  
    11.         }  
    12.         this._noDoc = null;  
    13.     }  
    14.     this._loadPercent = 0;  
    15.     var _loc_2:* = URLLoader(event.target);  
    16.     var _loc_3:* = _loc_2.data;  
    17.     this._byteArray = [];  
    18.     var _loc_4:Array = [];  
    19.     var _loc_5:int = 0;  
    20.     var _loc_6:* = _loc_3.length;  
    21.     while (_loc_5 < _loc_6)  
    22.     {  
    23.           
    24.         if (_loc_5 + 3 < _loc_6)  
    25.         {  
    26.             if ((_loc_3[_loc_5] == 67 || _loc_3[_loc_5] == 70) && _loc_3[(_loc_5 + 1)] == 87 && _loc_3[_loc_5 + 2] == 83 && (_loc_3[_loc_5 + 3] == 9 || _loc_3[_loc_5 + 3] == 10))  
    27.             {  
    28.                 _loc_4.push(_loc_5);  
    29.             }  
    30.         }  
    31.         else  
    32.         {  
    33.             _loc_4.push(_loc_6);  
    34.             break;  
    35.         }  
    36.         _loc_5++;  
    37.     }  
    38.     var _loc_7:* = _loc_3.readMultiByte(_loc_4[0], "utf-8");  
    39.     trace(_loc_7);  
    40.     var _loc_8:* = JSON.decode(_loc_7);  
    41.     this._pagesAll = Number(_loc_8["totalPage"]);  
    42.     if (!this._pagesLoaded)  
    43.     {  
    44.         this._pagesLoaded = 0;  
    45.     }  
    46.     this._pagesLoaded = this._pagesLoaded + (Number(_loc_8["toPage"]) - Number(_loc_8["fromPage"]) + 1);  
    47.     this._fromPage = Number(_loc_8["fromPage"]);  
    48.     this._toPage = Number(_loc_8["toPage"]);  
    49.     trace("pagesall:" + this._pagesAll + " , frompage:" + this._fromPage + " , topage:" + this._toPage);  
    50.     this._pagethLoading = Number(_loc_8["fromPage"]) - 1;  
    51.     var _loc_9:int = 0;  
    52.     var _loc_10:* = _loc_4.length - 1;  
    53.     while (_loc_9 < _loc_10)  
    54.     {  
    55.           
    56.         _loc_11 = new ByteArray();  
    57.         _loc_12 = _loc_4[(_loc_9 + 1)] - _loc_4[_loc_9];  
    58.         _loc_3.readBytes(_loc_11, 0, _loc_12);  
    59.         this._byteArray.push(_loc_11);  
    60.         _loc_9++;  
    61.     }  
    62.     trace("...............這一次加載了多少 頁:" + this._byteArray.length);  
    63.     this._hasConvertPages = 0;  
    64.     this._allConvertPages = Math.min(this._byteArray.length, this._toPage - this._fromPage + 1);  
    65.     if (this._allConvertPages > 0)  
    66.     {  
    67.         this.byteArr2DisplayObj(this._hasConvertPages);  
    68.     }  
    69.     else  
    70.     {  
    71.         trace("blank document ...");  
    72.         this.processNoDoc();  
    73.         this._loadPercent = 0;  
    74.         dispatchEvent(new Event("STOP_LOADING"true));  
    75.         this._inLoading = false;  
    76.     }  
    77.     return;  
    78. }// end function  


    到目前知道了百度的資源文件格式,也能實現(xiàn)文件的動態(tài)顯示,接下來就是需要實現(xiàn)文檔的上傳以及轉(zhuǎn)換等操作

    上傳 ,可以用百度默認的上傳flash,也可以使用第三方的上傳flash,這里有很多通用的flash上傳控件,只是在dotnet中接收大文件時需要修改 iis的相關(guān)配置。

    上傳到服務(wù)器后,首先采用數(shù)據(jù)庫記錄上傳的文件以及關(guān)聯(lián)用戶(或許這里面您需要為文庫建立 模 型 了)

    接下來需要進行的處理就是將任意文檔轉(zhuǎn)換為PDF ,這里面可以使用的有國外免費使用的PDF Convert 虛擬打印機,當(dāng)然也有付費版本的

    根據(jù)系統(tǒng)的情況確定是自動轉(zhuǎn)換為PDF,還是需要人工審核 ,百度采用的是人工審核的方式

    之后需要做的事情就是將PDF轉(zhuǎn)換為FlashPaper ,這里面需要您認真領(lǐng)會上面一段代碼,然后將文檔組織成為百度文庫Flash支持的文檔格式,暫時稱為SWFX吧,關(guān)于這個文件格式的描述,在一段時間后 我將公開他

    最后需要做的事情就是將轉(zhuǎn)換的SWFX存儲,結(jié)合后來裝載資源文件的規(guī)則進行命名及存儲

    所有的核心步驟就是這樣的,不過這里面有一個問題就是虛擬打印機的效率還是很低的,PDF轉(zhuǎn)換為FlashPaper的轉(zhuǎn)換效率也是馬馬虎虎,可以 考慮將這兩項工作交由windows服務(wù) 來實現(xiàn)

    也就是說需要使用C#開發(fā)一個windows服務(wù)來對審核通過的文檔進行兩次轉(zhuǎn)換工作。

    posted on 2010-07-05 22:40 SIMONE 閱讀(3384) 評論(4)  編輯  收藏

    FeedBack:
    # re: 百度文庫瀏覽器分析及實現(xiàn)(續(xù))
    2010-07-10 23:30 | xiaoguo
    niu ren  回復(fù)  更多評論
      
    # re: 百度文庫瀏覽器分析及實現(xiàn)(續(xù))
    2010-09-09 16:06 | chinull
    請標明【轉(zhuǎn)】  回復(fù)  更多評論
      
    # re: 百度文庫瀏覽器分析及實現(xiàn)(續(xù))
    2012-04-09 13:16 | shenenrui
    迫切想知道百度文庫知道的格式,謝謝。能發(fā)我郵箱嗎?
    ser88@163.com  回復(fù)  更多評論
      
    # re: 百度文庫瀏覽器分析及實現(xiàn)(續(xù))[未登錄]
    2012-09-07 13:28 | dd
    很不錯  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日本国产精华液| 久久精品亚洲综合专区| 国产成人亚洲综合网站不卡| 69av免费视频| 亚洲黄网站wwwwww| 69视频在线观看高清免费| 亚洲电影国产一区| 久久久久免费精品国产| 久久精品国产精品亚洲精品| 国产免费拔擦拔擦8X高清在线人| 亚洲国产高清人在线| 老汉精品免费AV在线播放| 2022年亚洲午夜一区二区福利 | 亚洲国产高清美女在线观看| 曰批全过程免费视频播放网站| 亚洲一卡2卡4卡5卡6卡残暴在线| 免费看国产精品3a黄的视频| 亚洲av日韩综合一区二区三区| 亚洲 小说区 图片区 都市| 人禽伦免费交视频播放| 国产亚洲综合久久系列| 毛片无码免费无码播放| 亚洲国产成人精品激情| 免费人妻无码不卡中文字幕18禁| h片在线播放免费高清| 亚洲高清在线观看| 一个人免费观看视频www| 亚洲GV天堂GV无码男同| 亚洲综合另类小说色区| 日本人的色道免费网站| 亚洲AV无码精品国产成人| 亚洲综合AV在线在线播放| 91短视频免费在线观看| 国产精品观看在线亚洲人成网| 国外亚洲成AV人片在线观看| 国产免费的野战视频| 男女猛烈无遮掩视频免费软件| 亚洲午夜免费视频| 国产成人精品免费直播| 84pao国产成视频免费播放| 女bbbbxxxx另类亚洲|