目录:
重要:所有
fork
了DocHub
项目的朋友,麻烦同时点一下watch
,以便关注项目更新动态和跟进一些重要的Bug的修复。
还在读大学的时候,当时就想着要搭建一个类似百度文库的文库站点,实现文档在线浏览。
然而,时间一晃,好几年过去了,自己终于亲自动手开发实现了一套开源文库程序。
尽管离百度文库还有着巨大的差距,尽管可(一)能(定)会存在Bug,但是,整套程序从前端到后端到数据库再到丑陋的LOGO设计,都是自己独立完成的,满满的成就感...
起初开发这套程序,是想自己做一个IT行业的文库站点,也就是现在的IT文库(https://wenku.it),当初给文库起名就叫IT文库
,但是决定开源出来之后,觉得这样不妥,于是起了个叫DocHub
的名字。
毕竟,有个Git仓库管理的站点叫GitHub
,那文档(Doc)仓库也就是文库,我干嘛不叫DocHub
呢?
DocHub
的中文名叫多哈
,程序猿,写代码就要开心,开心就要哈哈哈哈哈哈哈哈
,多哈
...(好幼稚)
程序源码,托管在GitHub
和Gitee
Go语言框架Beego
基于Bootstrap的前端框架Flat-UI
MySQL,数据存储
用于将office文档转PDF
使用命令:
soffice --headless --invisible --convert-to pdf path/to/officefile --outdir path/to/outdir
注意,这个要用最新版的
pdf2svg
pdf2svg,用于将PDF转成svg矢量图片,以供阅读。
使用命令:
pdf2svg <in file.pdf> <out file.svg> [<page no>]
用于将mobi
、chm
、epub
等文档转成PDF,然后再将pdf
转成svg
注意:目前
mobi
、epub
等文档的在线阅读功能还没有实现
存储office文档、PDF文档以及svg等文件
注意:目前只支持阿里云的OSS云存储,暂时不支持其他云存储(后期我再抽时间开发和扩展其他云存储),不支持本地化存储(现在云存储和CDN价钱比以前便宜多了)
DocHub
文库通过svg
矢量图来实现文档阅读体验的,我知道的文库站点中,新浪爱问是通过png
等图片提供文档阅读体验的。
SVG
相比png
、jpeg
等图片格式有很大的优势,至少放大不会失真,而且与JPEG 和 GIF 图像比起来,svg尺寸更小,可压缩性更强,DocHub
通过gzip,将svg文件压缩,一般情况下,能减少70%的文件大小,比如200kb的svg,gzip压缩后,只有60kb左右的大小。
使用svg,大大提升了加载速度,优化了内容的阅读体验。
这个需要经过两层转化:
office --> pdf --> svg
之前有考虑过office文档不经过转化,然后直接在线浏览的,但是方案比较复杂,部署不容易,至少我没部署成功过...
将PDF文档通过pdf2svg
转化,提供在线阅读
没有使用mozila的
pdf.js
作为PDF文档阅读的实现方案,主要是我没有解决pdf.js
分片分页加载的问题,每次都需要将整个PDF文档下载下来才能提供阅读。如果文档大的话,用户需要等待好长时间,而且也比较耗费服务器带宽资源。
使用calibre
将文档转成PDF,然后pdf再转svg。
目前该功能还没实现,epub、mobi等文档,现在还是暂时不能在线阅读
全文搜索功能,之前是使用coreseek
开发实现了这个功能的,但是现在coreseek
的官网都已经挂了...打算用elasticsearch
重新实现这个功能。
建站初期,站点内容的填充,是一个大难点。
然而,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
鼓励一下?
用户签到、上传分享文档,获得积分奖励;用户下载文档,需要消耗积分
在提供阅读的svg文件上添加水印
没有哪一个时代不是看脸的...
- 首页
- 文档阅读页
- 用户中心
- 管理后台
- 搜索结果
当运行程序的时候,程序会自动初始化数据,默认的初始管理员账号密码均是admin
但是由于环境依赖安装问题,所以有必要整理一个使用教程处理,使用教程放在书栈网(BookStack)上,教程地址:https://www.bookstack.cn/books/dochub
注意:目前暂时还没时间撰写,会尽快把部署教程写出来的
目前还没有搭建演示站点,争取在这周内搭建出来。
不过,在这之前,你可以访问IT文库(https://wenku.it)看网站效果,但是由于这个站点,在进行迁移的时候,部分依赖没配置好,所以上传的office、PDF等文档,暂时不支持预览,搜索功能也用不了。
所以,请耐心等待,届时搭建好了演示站点,会把演示站点的管理员账号密码放出来,以便体验使用。
DocHub
文库的前端模板,包括PC模板和移动端模板,也会放出来。但是,模板可能跟套在程序上的有差距,毕竟在开发的时候有对页面做了一些调整。
- GitHub: https://github.com/truthhun/DocHubTemplate4PC
- Gitee: https://gitee.com/truthhun/DocHubTemplate4PC
- GitHub: https://github.com/truthhun/DocHubTemplate4Mobile
- Gitee: https://gitee.com/truthhun/DocHubTemplate4Mobile
2014年7月本科"毕业"踏入IT行业;Web全栈工程师;什么都懂一点,什么都不精通。
由于整套程序都是独立一个人开发完成,限于个人经验、知识面和技术栈体系的限制,现在的程序不会是完美的,但至少,我在努力,我会争取把开源文库程序做好,缩短与成熟文库系统的差距。
所以,给出你的意见和建议,给出你的打赏与鼓励,让我知道,我不是一个人在孤独地战斗。
赞助的时候,麻烦备注一下你的称呼,以便公开并表示感谢