一、开源项目简介

参考百度文库,使用Beego(Golang)开发的开源文库系统。

二、功能概述 文档在线阅读

DocHub 文库通过 svg 矢量图来实现文档阅读体验的,我知道的文库站点中,新浪爱问是通过 png 等图片提供文档阅读体验的。

SVG 相比 png 、 jpeg 等图片格式有很大的优势,至少放大不会失真,而且与JPEG 和 GIF 图像比起来,svg尺寸更小,可压缩性更强, DocHub 通过gzip,将svg文件压缩,一般情况下,能减少70%的文件大小,比如200kb的svg,gzip压缩后,只有60kb左右的大小。

使用svg,大大提升了加载速度,优化了内容的阅读体验。

office文档在线阅读

这个需要经过两层转化:

 office --> pdf --> svg  
PDF文档在线阅读

将PDF文档通过 pdf2svg 转化,提供在线阅读

没有使用mozila的 pdf.js 作为PDF文档阅读的实现方案,主要是我没有解决 pdf.js 分片分页加载的问题,每次都需要将整个PDF文档下载下来才能提供阅读。如果文档大的话,用户需要等待好长时间,而且也比较耗费服务器带宽资源。

mobi、epub、chm文档在线阅读

使用 calibre 将文档转成PDF,然后pdf再转svg。

目前该功能还没实现,epub、mobi等文档,现在还是暂时不能在线阅读

全文搜索

全文搜索功能,之前是使用 coreseek 开发实现了这个功能的,但是现在 coreseek 的官网都已经挂了…打算用 elasticsearch 重新实现这个功能。

文档采集功能【TODO】

建站初期,站点内容的填充,是一个大难点。

然而, GitBook 、 ReadTheDoc 等站点上,就有一大堆的开源技术文档,提供 mobi 、 pdf 、 epub 离线文档下载。

初略统计了一下, GitBook 有10多万文档,按可用文档为5万估算,每份文档,提供3种格式的下载,光从gitbook采集文档,做成文库,就有15万多的文档了。

然后,你再借助下搜索引擎,搜索 filetype:文档格式 + 搜索关键字 ,如 filetype:pdf 入门教程 ,你就会发现惊喜!不信,你试着赋值下面两个链接地址在浏览器打开:

   
   

如果再爬其他文档,一年之内,单枪匹马搞个上百万文档的文库站点,应该不是个事儿。

不过,现在综合类的文库站点,如百度文库等已经做起来了,如果你打算做综合类的文库站点,还是不现实,因为空间太小了.

但是,你可以做专注于某一个方向的文库站点,比如课后习题答案文库站点、IT行业文库站点、教育类文库站点等,专注于一个行业领域方向,还是有很大成长空间的。就好比图片站点,现在很多搜索引擎都能搜索图片,但是 Pinterest 、 花瓣网 等还不是做起来了吗?

给你提供了程序,还给你提供了思路。

积分功能

用户签到、上传分享文档,获得积分奖励;用户下载文档,需要消耗积分

阅读文档水印功能

在提供阅读的svg文件上添加水印

三、技术选型 后端

Go语言框架Beego

前端

基于Bootstrap的前端框架Flat-UI

数据库

MySQL,数据存储

依赖环境 Libreoffice(或Openoffice)

用于将office文档转PDF

使用命令:

 soffice --headless --invisible --convert-to pdf path/to/officefile --outdir path/to/outdir  
pdf2svg

注意,这个要用最新版的pdf2svg

pdf2svg,用于将PDF转成svg矢量图片,以供阅读。

使用命令:

 pdf2svg <in file.pdf> <out file.svg> [<page no>]  
calibre

用于将 mobi 、 chm 、 epub 等文档转成PDF,然后再将 pdf 转成 svg

注意:目前mobi、epub等文档的在线阅读功能还没有实现

阿里云OSS

存储office文档、PDF文档以及svg等文件

注意:目前只支持阿里云的OSS云存储,暂时不支持其他云存储(后期我再抽时间开发和扩展其他云存储),不支持本地化存储(现在云存储和CDN价钱比以前便宜多了)

四、界面展示 页面一览

没有哪一个时代不是看脸的…

  • 首页
  • 文档阅读页
  • 用户中心
  • 管理后台
  • 搜索结果
五、开源协议

使用Apache2.0开源协议

六、源码地址

私信回复:文库系统

或访问一飞开源: