日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

(转)百度文库浏览器分析及实现(续)

發布時間:2024/4/17 HTML 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)百度文库浏览器分析及实现(续) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個是DotNet動態模擬的實現頁面:http://download.csdn.net/source/2153964

文庫系統已經開發完成了,包括上傳,動態轉換,以及符合百度文庫的資源文件的生成,打分,統計,收藏等功能

(由于項目的關系不能公開項目代碼,當前示例,僅包含顯示,不包含數據庫,上傳,動態轉換,資源文件生成等內容)

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

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

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

view plaincopy to clipboardprint?
private function binaryLoadComplete(event:Event = null) : void?
{??
??? var _loc_11:ByteArray = null;??
??? var _loc_12:int = 0;??
??? trace("binaryLoadComplete...");??
??? if (this._noDoc)??
??? {??
??????? if (this._noDoc.parent)??
??????? {??
??????????? this._noDoc.parent.removeChild(this._noDoc);??
??????? }??
??????? this._noDoc = null;??
??? }??
??? this._loadPercent = 0;??
??? var _loc_2:* = URLLoader(event.target);??
??? var _loc_3:* = _loc_2.data;??
??? this._byteArray = [];??
??? var _loc_4:Array = [];??
??? var _loc_5:int = 0;??
??? var _loc_6:* = _loc_3.length;??
??? while (_loc_5 < _loc_6)??
??? {??
??????? if (_loc_5 + 3 < _loc_6)??
??????? {??
??????????? 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))??
??????????? {??
??????????????? _loc_4.push(_loc_5);??
??????????? }??
??????? }??
??????? else?
??????? {??
??????????? _loc_4.push(_loc_6);??
??????????? break;??
??????? }??
??????? _loc_5++;??
??? }??
??? var _loc_7:* = _loc_3.readMultiByte(_loc_4[0], "utf-8");??
??? trace(_loc_7);??
??? var _loc_8:* = JSON.decode(_loc_7);??
??? this._pagesAll = Number(_loc_8["totalPage"]);??
??? if (!this._pagesLoaded)??
??? {??
??????? this._pagesLoaded = 0;??
??? }??
??? this._pagesLoaded = this._pagesLoaded + (Number(_loc_8["toPage"]) - Number(_loc_8["fromPage"]) + 1);??
??? this._fromPage = Number(_loc_8["fromPage"]);??
??? this._toPage = Number(_loc_8["toPage"]);??
??? trace("pagesall:" + this._pagesAll + " , frompage:" + this._fromPage + " , topage:" + this._toPage);??
??? this._pagethLoading = Number(_loc_8["fromPage"]) - 1;??
??? var _loc_9:int = 0;??
??? var _loc_10:* = _loc_4.length - 1;??
??? while (_loc_9 < _loc_10)??
??? {??
??????? _loc_11 = new ByteArray();??
??????? _loc_12 = _loc_4[(_loc_9 + 1)] - _loc_4[_loc_9];??
??????? _loc_3.readBytes(_loc_11, 0, _loc_12);??
??????? this._byteArray.push(_loc_11);??
??????? _loc_9++;??
??? }??
??? trace("...............這一次加載了多少頁:" + this._byteArray.length);??
??? this._hasConvertPages = 0;??
??? this._allConvertPages = Math.min(this._byteArray.length, this._toPage - this._fromPage + 1);??
??? if (this._allConvertPages > 0)??
??? {??
??????? this.byteArr2DisplayObj(this._hasConvertPages);??
??? }??
??? else?
??? {??
??????? trace("blank document ...");??
??????? this.processNoDoc();??
??????? this._loadPercent = 0;??
??????? dispatchEvent(new Event("STOP_LOADING", true));??
??????? this._inLoading = false;??
??? }??
??? return;??
}// end function?
??????? private function binaryLoadComplete(event:Event = null) : void
??????? {
??????????? var _loc_11:ByteArray = null;
??????????? var _loc_12:int = 0;
??????????? trace("binaryLoadComplete...");
??????????? if (this._noDoc)
??????????? {
??????????????? if (this._noDoc.parent)
??????????????? {
??????????????????? this._noDoc.parent.removeChild(this._noDoc);
??????????????? }
??????????????? this._noDoc = null;
??????????? }
??????????? this._loadPercent = 0;
??????????? var _loc_2:* = URLLoader(event.target);
??????????? var _loc_3:* = _loc_2.data;
??????????? this._byteArray = [];
??????????? var _loc_4:Array = [];
??????????? var _loc_5:int = 0;
??????????? var _loc_6:* = _loc_3.length;
??????????? while (_loc_5 < _loc_6)
??????????? {
??????????????? if (_loc_5 + 3 < _loc_6)
??????????????? {
??????????????????? 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))
??????????????????? {
??????????????????????? _loc_4.push(_loc_5);
??????????????????? }
??????????????? }
??????????????? else
??????????????? {
??????????????????? _loc_4.push(_loc_6);
??????????????????? break;
??????????????? }
??????????????? _loc_5++;
??????????? }
??????????? var _loc_7:* = _loc_3.readMultiByte(_loc_4[0], "utf-8");
??????????? trace(_loc_7);
??????????? var _loc_8:* = JSON.decode(_loc_7);
??????????? this._pagesAll = Number(_loc_8["totalPage"]);
??????????? if (!this._pagesLoaded)
??????????? {
??????????????? this._pagesLoaded = 0;
??????????? }
??????????? this._pagesLoaded = this._pagesLoaded + (Number(_loc_8["toPage"]) - Number(_loc_8["fromPage"]) + 1);
??????????? this._fromPage = Number(_loc_8["fromPage"]);
??????????? this._toPage = Number(_loc_8["toPage"]);
??????????? trace("pagesall:" + this._pagesAll + " , frompage:" + this._fromPage + " , topage:" + this._toPage);
??????????? this._pagethLoading = Number(_loc_8["fromPage"]) - 1;
??????????? var _loc_9:int = 0;
??????????? var _loc_10:* = _loc_4.length - 1;
??????????? while (_loc_9 < _loc_10)
??????????? {
??????????????? _loc_11 = new ByteArray();
??????????????? _loc_12 = _loc_4[(_loc_9 + 1)] - _loc_4[_loc_9];
??????????????? _loc_3.readBytes(_loc_11, 0, _loc_12);
??????????????? this._byteArray.push(_loc_11);
??????????????? _loc_9++;
??????????? }
??????????? trace("...............這一次加載了多少頁:" + this._byteArray.length);
??????????? this._hasConvertPages = 0;
??????????? this._allConvertPages = Math.min(this._byteArray.length, this._toPage - this._fromPage + 1);
??????????? if (this._allConvertPages > 0)
??????????? {
??????????????? this.byteArr2DisplayObj(this._hasConvertPages);
??????????? }
??????????? else
??????????? {
??????????????? trace("blank document ...");
??????????????? this.processNoDoc();
??????????????? this._loadPercent = 0;
??????????????? dispatchEvent(new Event("STOP_LOADING", true));
??????????????? this._inLoading = false;
??????????? }
??????????? return;
??????? }// end function

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

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

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

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

根據系統的情況確定是自動轉換為PDF,還是需要人工審核 ,百度采用的是人工審核的方式

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

最后需要做的事情就是將轉換的SWFX存儲,結合后來裝載資源文件的規則進行命名及存儲

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

也就是說需要使用C#開發一個windows服務來對審核通過的文檔進行兩次轉換工作。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/chinull/archive/2010/04/19/5503397.aspx

轉載于:https://www.cnblogs.com/cwfsoft/archive/2010/05/05/1728152.html

總結

以上是生活随笔為你收集整理的(转)百度文库浏览器分析及实现(续)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女的高潮流时喷水图片大全 | 四虎精品久久 | 久久婷婷一区 | 99热影院| 四虎色 | 折磨小男生性器羞耻的故事 | 日本精品久久久久中文字幕 | 精品久久久久一区二区国产 | 日本免费小视频 | 色婷婷免费 | 国产精品一区二区三区在线免费观看 | 国内自拍偷拍网 | 午夜视频在线观看免费视频 | 国产高清免费在线观看 | 国产午夜激情视频 | 无法忍受在线观看 | 国产精品国产成人国产三级 | 午夜福利毛片 | 亚洲视频在线观看免费 | 少妇激情一区二区三区视频 | 全黄一级播放 | 国产麻豆剧传媒精品国产av | 亚洲熟女乱综合一区二区三区 | 岛国av动作片| 在线波多野结衣 | 亚洲区小说区图片区qvod | 色偷偷91 | 在线观看日批 | av毛片精品 | 日韩h在线 | 国产www性| 日韩精品成人无码专区免费 | 欧美精品一区二区三区久久久 | 五十路六十路七十路熟婆 | 欧美日韩电影一区二区 | 丰满人妻一区二区三区53 | 日韩一区二区精品视频 | 久久免费在线视频 | 在线中文字幕网站 | 青青草婷婷 | 国产黑丝视频 | 日韩性猛交ⅹxxx乱大交 | 日韩av网站在线观看 | 国产一级淫 | 99无码熟妇丰满人妻啪啪 | 9l视频自拍蝌蚪9l视频成人 | 7x7x7x人成影视 | 国产男女猛烈无遮挡免费视频 | 公侵犯人妻一区二区 | 把高贵美妇调教成玩物 | 日韩中文字幕网 | 成人xxx视频 | 午夜激情视频网站 | 欧美在线一级视频 | 免费观看a视频 | 国产一级片免费在线观看 | 丝袜美腿一区二区三区 | 亚洲2022国产成人精品无码区 | 色偷偷888欧美精品久久久 | 人妻无码久久精品人妻 | 国产aaaaa毛片| 国产九区 | 国产白拍| а√天堂www在线天堂小说 | 亚洲成人免费在线观看 | 国产www在线观看 | 午夜欧美视频 | 精品人妻少妇一区二区三区 | 第一页国产 | 亚洲人人爱 | 美女扒开让男人桶爽 | 国产精品久久久久久久久久妞妞 | 国产精品理论片 | 国产成人在线观看 | 亚洲天堂网络 | 都市激情第一页 | 久久免费高清视频 | 色哟哟免费视频 | 欧美8888 | 九九热视频免费观看 | 欧美性生活免费视频 | 男人操女人逼逼视频 | 狠狠干影院 | 国产有码在线观看 | 九色亚洲| 一本色道无码道dvd在线观看 | 欧美丰满少妇 | 一边摸一边抽搐一进一出视频 | 久久噜噜噜精品国产亚洲综合 | 久久久精品区 | 国产日韩欧美专区 | 嫩草影院懂你的影院 | 黄色网页在线看 | 国产精品99久久久久久久女警 | 欧美午夜在线观看 | 男人懂的网站 | 国产精品xxx在线观看 | 青青在线免费观看 | 黄色激情毛片 |