DocHub是使用Go语言的Beego框架实现的文库方案,使用对商业友好的Apache2.0开源协议进行开源,支持office文档、PDF文档、txt、epub、mobi等多种格式文档的在线阅读和浏览。
![15080300_nM9N.png](http://static.bookstack.cn/projects/dochub/153f88cc3d1c3132.png "15080300_nM9N.png")
![15080300_JrjC.png](http://static.bookstack.cn/projects/dochub/153f88d70befb6fb.png "15080300_JrjC.png")
## 升级日志
1\. OSS存储代码封装优化。
review了一下之前自己封装的OSS代码,感觉太乱了...
2\. 重新设计登录页面。
之前的登录页面确实丑(不过现在的登录页面好像也好不到哪儿去...)
3\. 用户头像和文档封面等默认图片优化
在加载图片的时候直接在前端使用`onerror`,不再在后端查询OSS中图片是否存在以及不存在时返回默认图片,以便节省OSS请求资源。
所以,现在不需要再把默认图片上传到OSS,然后再在配置文件里面配置默认图片的地址了
4\. 配置文件优化
所有相关配置项,为了配置的方便,都统一放到app.conf文件中。
配置文件中的每一项,都加上了详尽的配置说明。
app.conf文件,放在`conf`目录下,`app.conf.example`的文件就是了,把`.example`扩展名去掉就好
5\. mobi、epub、chm、txt等格式文档在线浏览的实现支持。
目前DocHub文库经实测支持在线阅读的文档格式如下:
Word文档:doc,docx,rtf,wps,odt
Excel文档:ppt,pptx,pps,ppsx,dps,odp,pot
PPT文档:xls,xlsx,et,ods
PDF文档:pdf
其他文档:txt,epub,mobi,chm
umd格式文档暂不支持在线阅读,chm格式文档在线阅读实现效果并不是很好,文档内容顺序会错乱。
相信DocHub文库系统对文档格式的支持比网上的一些收费文库系统对文档格式的支持还要多了吧。
有收到网友建议,建议使用`onlyoffice`、`Collabora`、`flash paper`、`pdf.js`等实现文档在线阅读的方案。
集思广益,非常感谢大家积极提意见和建议。
然后我也认真的去体验和测试了。就拿`onlyoffice`来说,我在docker下玩了下(我的docker hub : https://hub.docker.com/r/truthhun/onlyoffice/ ),每次都进行文档转换,太耗费服务器资源了,而且,用户可以直接拿到下载文档,相信这是很多站长不愿看到的。
而且用户需要把整个文档加载下来才能阅读,也比较耗费带宽资源。`新浪爱问共享资料`都用图片作为文档在线阅读实现方案,相信他们也是有这一层面的考虑的,所以,我们跟着大佬走。
6\. 解决邮件无法发送的问题
统一使用SMTP发送邮件,并实现对TLS/SSL邮件的发送支持。使用了https://github.com/go-gomail/gomail库 。
有网友在群里反馈说邮件发不出去...由于没人帮我测试,我现在是自己开发自己测试,基本都是自己测试通过了没问题了就默认这个功能没问题了,很多场景可能考虑不到,所以有些问题我自己还是难以发现,并没有把大家当小白鼠...
7\. 文档阅读页面性能优化
之前的文档阅读页面,当文档翻的页数越多,页面会越来越卡,直到卡死在那里(巨大的Bug)...
这是前端js对文档的`svg`重复计算造成的,比如我翻到第100页,每次滚动一下鼠标,差不多就要触发3000多次对`svg`图片位置的计算,以便确定用户当前阅读到了哪一页,以及触发哪一页的懒加载...
8\. 文档预览页数限制
可在`管理后台`->`系统设置`->`文档最大预览页数`做限制。
这样的好处就是,如果一个300页的文档,只提供100页给用户阅读,就可以减少服务器后端PDF后200页文档转svg的资源开销。
不提供大文档的全文档给用户阅读,既可以节省服务器资源,也可以促进用户使用积分下载文档...新浪爱问共享资料就是这么干的...
## 安装部署教程
目前只写了`docker`的安装部署教程,部署教程地址:https://www.bookstack.cn/read/dochub/docker
DocHub文库系统,目前并不是很完美,移动端WAP站点和微信小程序还没开发,但是,我在努力!
## 演示站点
地址:http://dochub.bookstack.cn
管理后台:http://dochub.bookstack.cn
管理员账号密码均为`admin`
登录验证码是:`芝麻开门`
## 源码托管
- GitHub:https://github.com/TruthHun/DocHub
- Gitee:https://gitee.com/TruthHun/DocHub