posts - 495,comments - 227,trackbacks - 0
          http://blog.csdn.net/chinull/archive/2010/06/28/5698775.aspx

          豆丁及百度文件格式描述

          一、       豆丁文件格式的版本

          描述豆丁文件格式版本之前,有必要交代一下豆丁文件在豆丁文檔器中裝載的過程。

          1.      通過js傳遞ProductIdDocinFlashPlayer

          2.      DocinFlashPlayer調用DocinProductWebServicegetProductInfo方法獲取ProductInfo。這里面有一個屬性conversionSucceeconverSuccess)描述了豆丁文件格式的 版本信息。(>20V3否則為V2

          3.      pageNum屬性描述了子文件的數量

          4.      docin資源文件的URI地址及格式為:

          第一個文件(i == 1)

          http://file.yimk.com/docin_{ProductId}.docin

          其他文件(i == 2 to pageNum)

          http://file.yimk.com/docin_{ProductId}_{i}.docin

           

          介紹以上內容的原因是 從豆丁資源文件本身是無法識別文件的版本信息的,但是也可以采用試探的方式進行轉換。

          具體細節為讀取第三/四字節,如這兩個字節值 為0x00,則為V3,否則為V2

          二、       豆丁V2格式描述

          Stream headerLen headcontent body(X)content

          Length   4       headerLen    @size(x)

           

          headcontent iso-8859-1 encoder(解碼后字符串如)

          <root>

          <node size="43893" width="595" height="842"/>

          <node size="34595" width="595" height="842"/>

          </root>

          FlexPaper的對應關系

          該版本中讀取的@sizeX部分的內容即為第X頁的swf內容

          三、       豆丁V3格式描述

          Stream pageWidth pageHeight _totalPages headerLen swfHeaderContent

          Length    4         4         4       4         headerLen

          Stream body(X)Len body(X)Content

          Length    4         body(X)Len

          所謂的豆丁知識產權的 部分也就在這里了

          采用zlib的壓縮傳輸,對flexPaper進行了分包并壓縮

          Content = Uncompress(swfHeaderContent)+ Uncompress(body(X)Content)

          Tlen =len(Content)

          FlexPaper(x)= byte(70) byte(87) byte(83) byte(09) byte([](tlen) Content

          四、       百度資源文件的格式描述

          很多朋友都想知道百度 文庫的文件格式,通過分析豆丁的文件格式,發現其實百度文庫的格式很相似,并且更為簡單,但是文件的體積相對較大。

          Stream jsonstring body(X)content

          Length   102?    @size(x)

          其實百度的jsonstring的長度我沒有仔細測試其 長度,因為在這樣的格式下,只需要抓取CWS或者FWS

          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))  

          posted on 2010-07-05 22:53 SIMONE 閱讀(5566) 評論(3)  編輯  收藏

          FeedBack:
          # re: 豆丁及百度文件格式描述
          2010-08-02 16:27 | zjq
          好文章  回復  更多評論
            
          # re: 豆丁及百度文件格式描述[未登錄]
          2012-04-13 12:44 | yy
          豆丁文檔下載器提示錯誤:
          “無法解析此遠程名稱 file.yimk.com”
          是什么原因呢?  回復  更多評論
            
          # re: 豆丁及百度文件格式描述
          2012-04-17 12:45 |
          我也想知道啊~~~~~~~~~@yy
            回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 玉门市| 吉林市| 灌南县| 鄂温| 托克托县| 承德市| 土默特左旗| 通江县| 汉川市| 灵丘县| 玉山县| 绵阳市| 桑植县| 海城市| 阜宁县| 汽车| 陕西省| 绵阳市| 璧山县| 剑河县| 彝良县| 兴文县| 都匀市| 岱山县| 卢氏县| 彩票| 克拉玛依市| 和田县| 泸溪县| 南陵县| 安康市| 福安市| 周至县| 容城县| 虞城县| 桃江县| 田林县| 三原县| 开原市| 厦门市| 保靖县|