## 主要技術棧
### [](https://gitee.com/truthhun/DocHub#%E5%90%8E%E7%AB%AF)后端
Go語言框架[Beego](https://beego.me/)
### [](https://gitee.com/truthhun/DocHub#%E5%89%8D%E7%AB%AF)前端
基于Bootstrap的前端框架[Flat-UI](https://github.com/designmodo/Flat-UI)
### [](https://gitee.com/truthhun/DocHub#%E6%95%B0%E6%8D%AE%E5%BA%93)數據庫
MySQL,數據存儲
### [](https://gitee.com/truthhun/DocHub#%E4%BE%9D%E8%B5%96%E7%8E%AF%E5%A2%83)依賴環境
#### [](https://gitee.com/truthhun/DocHub#libreoffice%E6%88%96openoffice)Libreoffice(或Openoffice)
用于將office文檔轉PDF
使用命令:
~~~
soffice --headless --invisible --convert-to pdf path/to/officefile --outdir path/to/outdir
~~~
#### [](https://gitee.com/truthhun/DocHub#pdf2svg)pdf2svg
> 注意,這個要用最新版的`pdf2svg`
pdf2svg,用于將PDF轉成svg矢量圖片,以供閱讀。
使用命令:
~~~
pdf2svg <in file.pdf> <out file.svg> [<page no>]
~~~
#### [](https://gitee.com/truthhun/DocHub#calibre)calibre
用于將`mobi`、`chm`、`epub`等文檔轉成PDF,然后再將`pdf`轉成`svg`
> 注意:目前`mobi`、`epub`等文檔的在線閱讀功能還沒有實現
#### [](https://gitee.com/truthhun/DocHub#%E9%98%BF%E9%87%8C%E4%BA%91oss)阿里云OSS
存儲office文檔、PDF文檔以及svg等文件
> 注意:目前只支持阿里云的OSS云存儲,暫時不支持其他云存儲(后期我再抽時間開發和擴展其他云存儲),不支持本地化存儲(現在云存儲和CDN價錢比以前便宜多了)
## [](https://gitee.com/truthhun/DocHub#%E5%8A%9F%E8%83%BD%E7%89%B9%E7%82%B9)功能特點
### [](https://gitee.com/truthhun/DocHub#%E6%96%87%E6%A1%A3%E5%9C%A8%E7%BA%BF%E9%98%85%E8%AF%BB)文檔在線閱讀
`DocHub`文庫通過`svg`矢量圖來實現文檔閱讀體驗的,我知道的文庫站點中,[新浪愛問](http://ishare.iask.sina.com.cn/)是通過`png`等圖片提供文檔閱讀體驗的。
`SVG`相比`png`、`jpeg`等圖片格式有很大的優勢,至少放大不會失真,而且與JPEG 和 GIF 圖像比起來,svg尺寸更小,可壓縮性更強,`DocHub`通過gzip,將svg文件壓縮,一般情況下,能減少70%的文件大小,比如200kb的svg,gzip壓縮后,只有60kb左右的大小。
使用svg,大大提升了加載速度,優化了內容的閱讀體驗。
#### [](https://gitee.com/truthhun/DocHub#office%E6%96%87%E6%A1%A3%E5%9C%A8%E7%BA%BF%E9%98%85%E8%AF%BB)office文檔在線閱讀
這個需要經過兩層轉化:
~~~
office --> pdf --> svg
~~~
#### PDF文檔在線閱讀
將PDF文檔通過`pdf2svg`轉化,提供在線閱讀
> 沒有使用mozila的`pdf.js`作為PDF文檔閱讀的實現方案,主要是我沒有解決`pdf.js`分片分頁加載的問題,每次都需要將整個PDF文檔下載下來才能提供閱讀。如果文檔大的話,用戶需要等待好長時間,而且也比較耗費服務器帶寬資源。
#### [](https://gitee.com/truthhun/DocHub#mobiepubchm%E6%96%87%E6%A1%A3%E5%9C%A8%E7%BA%BF%E9%98%85%E8%AF%BB)mobi、epub、chm文檔在線閱讀
使用`calibre`將文檔轉成PDF,然后pdf再轉svg。
> 目前該功能還沒實現,epub、mobi等文檔,現在還是暫時不能在線閱讀
### [](https://gitee.com/truthhun/DocHub#%E5%85%A8%E6%96%87%E6%90%9C%E7%B4%A2)全文搜索
全文搜索功能,之前是使用`coreseek`開發實現了這個功能的,但是現在`coreseek`的官網都已經掛了...打算用`elasticsearch`重新實現這個功能。
### [](https://gitee.com/truthhun/DocHub#%E6%96%87%E6%A1%A3%E9%87%87%E9%9B%86%E5%8A%9F%E8%83%BDtodo)文檔采集功能【TODO】
建站初期,站點內容的填充,是一個大難點。
然而,`GitBook`、`ReadTheDoc`等站點上,就有一大堆的開源技術文檔,提供`mobi`、`pdf`、`epub`離線文檔下載。
初略統計了一下,`GitBook`有10多萬文檔,按可用文檔為5萬估算,每份文檔,提供3種格式的下載,光從gitbook采集文檔,做成文庫,就有15萬多的文檔了。
然后,你再借助下搜索引擎,搜索`filetype:文檔格式 + 搜索關鍵字`,如`filetype:pdf 入門教程`,你就會發現驚喜!不信,你試著賦值下面兩個鏈接地址在瀏覽器打開:
~~~
https://cn.bing.com/search?q=filetype%3apdf+%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B&first=11
~~~
~~~
https://www.sogou.com/web?query=filetype%3Apdf+%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B
~~~
如果再爬其他文檔,一年之內,單槍匹馬搞個上百萬文檔的文庫站點,應該不是個事兒。
不過,現在綜合類的文庫站點,如百度文庫等已經做起來了,如果你打算做綜合類的文庫站點,還是不現實,因為空間太小了.
但是,你可以做專注于某一個方向的文庫站點,比如課后習題答案文庫站點、IT行業文庫站點、教育類文庫站點等,專注于一個行業領域方向,還是有很大成長空間的。就好比圖片站點,現在很多搜索引擎都能搜索圖片,但是`Pinterest`、`花瓣網`等還不是做起來了嗎?
> 給你提供了程序,還給你提供了思路,給個`star`鼓勵一下?
### [](https://gitee.com/truthhun/DocHub#%E7%A7%AF%E5%88%86%E5%8A%9F%E8%83%BD)積分功能
用戶簽到、上傳分享文檔,獲得積分獎勵;用戶下載文檔,需要消耗積分
### [](https://gitee.com/truthhun/DocHub#%E9%98%85%E8%AF%BB%E6%96%87%E6%A1%A3%E6%B0%B4%E5%8D%B0%E5%8A%9F%E8%83%BD)閱讀文檔水印功能
在提供閱讀的svg文件上添加水印