打造 web 版阅读器

本贴最后更新于 1372 天前,其中的信息可能已经时移世改

web 版阅读器设计

项目

端午给自己的礼物,web 版 pdf 阅读器

实现功能

  1. 书架展示
  2. 书架的管理
    • 添加
    • 删除
  3. 管理员权限
  4. 书籍的阅读
    • 前后翻页
    • 笔记功能

技术选型

  • 前端 : jq layui
  • 后端 : golang unipdf
  • 存储 : mysql
  • 部署 : nginx 做前端服务器,主要作用是做反向代理;golang 做 static 文件的存储 如速度太慢可以考虑上 cdn; mysql 用 docker 部署,和腾讯云服务器中的其他组件进行隔离,配置 phpmyadmin 进行 UI 管理

大体设计

1、所有的展示功能不做权限控制,所有的用户都可以看见
2、书籍管理功能做权限控制,具备登录登录能力,登录后每次,将 用户名和密码 md5 写入 cookie,每一次请求都将 cookie 带上
3、后端解析 pdf 得到页面和 当前内容(文字 表格 图片),下发给前端做页面展示
4、笔记只支持页面级别的记录,减小开发难度

表结构和相关接口

数据表

# 用户表
create table user {
id int ,
name ,
passwd,
avater, 
ctime,
mtime,    
}
#笔记表
create table note {
id 
userid
book
content
image
ctime,
mtime, 
 
}
#  
create table book {
name
up_user_name
filepath
pathtype 
ctime
mtime
}

接口

书籍上传接口

Method : POST
path : /book/update
body:
    user_name  : {string}
    book   :  file
resp:
   {
       "errno":0,
       "msg":""
   }

书籍列表接口

Method :GET
path : /book/list?start={int}&sum={int}
resp :
   {
      "errno":0,
      "errmg":""
       "data":[
                {
                   "name":"",
                   "image":"",
                   "id":"",

                  },
                ]
  
}

阅读接口

Method : GET
 /book/get?book_id={int}&page={int}
resp :
     {
       "errno":0,
       "msg":"",
        "data":{
          "content":"",
          "hasnote": true/false,
          "note":""
       }
   }

笔记上传接口

/note/update?

quest

{
    "bookid":{int},
     "content":"",
}
  {
       "errno":0,
       "msg":""
   }

风险点

1、 个人项目,权限这块破解程度比较容易
2、请求实时解析 pdf,性能有较大有影响,如果接入流量过大,可以预处理好 pdf

  • Web
    115 引用 • 430 回帖 • 8 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 这个应该是个在线 PDF 转 HTML。一开始理解为把 HTML 转为 PDF,然后在线阅读。总觉得哪里怪怪的(PDF 可以直接调用浏览器功能生成,为什么还要做呢?)

    PDF 转成 HTML 的话,如果 PDF 中的文字都是图片形式存在的话,是可以识别为文字,还是很暴力的将其直接输出为图片?我记得很早以前用过一个转换软件就是把带文字的图片转换成一张图片。