Koodo Reader : 一个开源免费的电子书阅读器

今天在浏览 GitHub 的时候,偶然发现了一个非常有趣的开源项目——Koodo Reader。这个项目是一款开源免费的电子书阅读器,支持多种格式。它具有一些非常独特的功能,深深地吸引了我的注意。在接下来的内容中,我将为大家详细介绍一下这个备受关注的阅读器项目。

koodoreader.jpg

Koodo Reader 介绍

Koodo Reader,一个跨平台的电子书阅读器,目前在github上已有14.1k star,是一个web项目。

_20240108225532.jpg

网页版地址: https://reader.960960.xyz/

github地址:https://github.com/koodo-reader/koodo-reader

文档地址:https://koodo.960960.xyz/zh/document

客户端下载地址:https://koodo.960960.xyz/zh

特色

  • 支持阅读格式:

    • EPUB (.epub)

    • 扫描文档 (.pdf, .djvu)

    • Kindle (.azw3, .mobi, .azw)

    • 纯文本 (.txt)

    • 漫画 (.cbr, .cbz, .cbt, .cb7)

    • 富文本 (.md, .docx)

    • FB2 (.fb2)

    • 超文本 (.html, .xml, .xhtml, .mhtml, .htm, .htm)

  • 支持 Windows,macOS,Linux 和 网页版

  • 备份数据到 OneDrive, Google Drive, Dropbox, FTP, SFTP, WebDAV, S3, S3 compatible

  • 自定义源文件夹,利用 OneDrive、百度网盘、iCloud、Dropbox 等进行多设备同步

  • 双页模式,单页模式,滚动模式

  • 听书功能,翻译功能,词典功能,触控屏支持,批量导入图书

  • 支持目录,书签,笔记,高亮,书架,标签

  • 自定义字体,字体大小,行间距,段落间距,阅读背景色,文字颜色,屏幕亮度,文字下划线、斜体、文字阴影、字体粗细

  • 黑夜模式和主题色设置

Koodo Reader 私有化部署

尽管作者已经为我们提供了Windows客户端和网页版,但作为热衷于Docker的爱好者,我们自然希望进行私有化部署。接下来,让我们详细介绍一下如何进行私有化部署的步骤。

有兴趣的家人们可以下载源码之后在项目的根路径运行 yarn 命令,接着运行 yarn build 的命令,之后根路径下会出现一个buid目录,我们将build目录下的文件复制到nginx的html目录下即可使用。不想下载项目的家人们也可以直接使用我打好的镜像registry.cn-hangzhou.aliyuncs.com/xj_lew/koodo-reader:1.0进行docker 部署,步揍如下:

创建docker-compose.yml文件:

version: '3.3'
services:koodo:image: registry.cn-hangzhou.aliyuncs.com/xj_lew/koodo-reader:1.0container_name: koodo-ngrestart: alwayslogging:driver: 'json-file'options:max-size: '5g'environment:- NGINX_PORT=80ports:- 8099:80volumes:- ./nginx.conf:/etc/nginx/nginx.conf

创建nginx的配置文件nginx.conf文件

user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;client_max_body_size 500m;include /etc/nginx/conf.d/*.conf;server {listen       80;
#        外网访问的域名server_name  192.168.10.106;location / {root /usr/share/nginx/html;index index.html;try_files $uri $uri/ /index.html;}}
}

启动容器:

docker-compose up -d 

如果不出意外的话我们的容器就启动成功了

Koodo Reader使用

在浏览器上输入访问地址

_20240108230641.jpg

  • 导入图书,可批量导入

_20240108231226.jpg

  • 添加读书笔记

我特别喜欢这个功能,特别是在处理大量阅读内容的文件时。我们可以轻松添加读书笔记,而且还能直接通过我的笔记-》显示笔记出处快速跳转到电子书或PDF对应的位置。

_20240108231700.jpg

_20240108232058.jpg

_20240108232532.jpg

_20240108232621.jpg

别的功能我们此处就不做演示了。

Koodo Reader 缺点

  • 本地存储\浏览器存储,多端不同步

Koodo Reader客户端版本是基于本地存储的,要多端同步的话需要借助网盘的同步空间功能,而网页版的数据作为缓存临时保存在了浏览器中,清理缓存会导致数据丢失。

  • 对于md、html的阅读体验感不好

虽然它支持阅读md和html等文件,但是页面查看的效果不是很好。

总结

Koodo Reader不仅仅是一款数字阅读应用,更是一场阅读的冒险。它为用户提供了丰富的功能,使阅读变得更加个性化、便捷和有趣。尽管目前仍存在一些不完善之处,但它正在持续不断地进行更新,我们期待未来它能够更加完善。不论您是文学、学术、漫画还是其他领域的热爱者,Koodo Reader都将成为您数字阅读之旅的得力助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

07、Kafka ------ 消息生产者(演示 发送消息) 和 消息消费者(演示 监听消息)

目录 Kafka --- 消息生产者★ 消息★ 消息的分发机制★ 分发到哪个分区★ 轮询策略(round-robin)★ 使用命令行工具发送消息演示添加消息 Kafka --- 消息消费者★ 消息消费者命令▲ 监听 【指定主题】 的所有消息:▲ 监听 【指定主题、指定分区】的所有消…

LED电平显示驱动电路图

LB1409九位LED电平显示驱动电路 如图所示为LBl409九位LED电平显示驱动电路。图(a)是用LB1409做电平显示驱动电路,图(b)是应用基准电压电平显示驱动电路。LB1409是日本东京互洋电机株式会社生产的产品,与其…

开启Android学习之旅-5-Activity全屏

Android 两种方式设置全屏: 1. 第一行代码中的方法 通过 getWindow().getDecorView()方法拿到当前Activity的DecorView,再调用 setSystemUiVisibility() 方法来改变系统UI的显示,这里传入了 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 和 View.SYSTEM_UI_…

上海雏鸟科技无人机灯光秀跨年表演点亮三国五地夜空

2023年12月31日晚,五场别开生面的无人机灯光秀跨年表演在新加坡圣淘沙、印尼雅加达、中国江苏无锡、浙江衢州、陕西西安等五地同步举行。据悉,这5场表演背后均出自上海的一家无人机企业之手——上海雏鸟科技。 在新加坡圣淘沙西乐索海滩,500架…

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中,类图是使用频率最高的两种UML图之一(另一种是用于需求建模的用例图),它用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解…

Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。 本节&#xff1a;自定义界面 在网上看见一个博客&#xff0c;根据需要演示一下。 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:…

系列三十五、获取Excel中的总记录数

一、获取Excel中的总记录数 1.1、概述 使用EasyExcel开发进行文件上传时&#xff0c;通常会碰到一个问题&#xff0c;那就是Excel中的记录数太多&#xff0c;使用传统的方案进行文件上传&#xff0c;很容易就超时了&#xff0c;这时可以通过对用户上传的Excel中的数量进行限制…

vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐html数据解析&#x1f496; html字符串转为html对象&#x1f496; 深度遍历html对象内容 ⭐echarts 树图的渲染&#x1f496; 处理html内容为树状结构&#x1f496; 渲染树状图&#x1f496; inscode代码块 ⭐总结⭐结束 ⭐前言 大…

CentOS 7 安装私有平台OpenNebula

目录 一、配置yum源 二、配置数据库MySQL 2.1 安装MySQL 2.2 修改MySQL密码 2.3 创建项目用户和库 三、安装配置前端包 四、设置oneadmin账号密码 五、验证安装 5.1 命令行验证安装 5.2 数据存放位置 5.3 端口介绍 5.4 命令介绍 六、访问 6.1 设置语言 6.2 创建主…

C语言中的预处理

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Git将本地项目上传到Gitee仓库

1.右键点击文件&#xff0c;点击Git Bash Here,进入git窗口 2.初始化本地仓库 git init3.将本地仓库与远程仓库建立连接 git remote add origin 远程仓库地址远程仓库地址在gitee仓库复制即可 4.将远程仓库的文件拉到本地仓库中 git pull origin master5.将本地文件全部上传…

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(11)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置&#xff08;10&#xff09; 2.3 PCI桥与PCI设备的配置空间 PCI设备都有独立的配置空间&#xff0c;HOST主桥通过配置读写总线事务访问这段空间。PCI总线规定了三种类型的PCI配置…

油烟机灯泡更换

油烟机自带两个小灯&#xff0c;开始两个都亮&#xff0c;后来只有一个亮&#xff0c;再后来都不亮了 这个感觉是旋转卡尺打开&#xff0c;用剪子卡主转不动&#xff0c;打不开&#xff0c;可能是油烟粘住了。使用螺丝刀直接撬开。 发现果真是旋转卡扣。灯泡已经烧黑。 换上新…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票创建页面实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

【Emgu.CV教程】4.2、无缝融合应用之IlluminationChange()函数去除高亮区域

上一篇讲的是ColorChange()函数&#xff0c;今天讲IlluminationChange()函数&#xff0c;它可以去除图片中的高亮区域。试想一下&#xff0c;下面是一张反光背心的夜间照片&#xff0c;反光条颜色特别亮&#xff0c;如果想只把反光的部分变暗一点&#xff0c;其余部分不变&…

嵌入式Linux-Qt环境搭建

本编介绍如何在嵌入式Linux开发板上配置Qt运行环境&#xff0c;并进行Qt程序运行测试。 1 tslib编译 tslib之前在测试触摸屏的时候使用过&#xff0c;这里再来记录一下编译过程。 下载tslib库的源码&#xff1a;https://github.com/libts/tslib/tags 将下载的源码拷贝到ubun…

Java学习笔记(六)——基本数据类型及其对应的包装类

文章目录 包装类基本数据类型及其对应的包装类获取Integer对象的方式(了解)获取Integer对象两种方式的区别(掌握) 包装类的计算&#xff1a;自动装箱和自动拆箱Integer成员方法综合练习练习1练习2练习3练习4练习5 包装类 包装类&#xff1a;基本数据类型对应的引用数据类型。 …

Python多线程同步锁

Python同步锁 多线程是共用一个进程空间的&#xff0c;当多个线程要用到相同的数据&#xff0c;那么久会存在资源竞争和锁的问题。 锁是用来实现共享资源的同步访问。为每一个共享资源创建一个Lock对象&#xff0c;当需要访问共享资源的时候&#xff0c;调用acquire方法来获取…

目标检测再升级!YOLOv8模型训练和部署

YOLOv8 是 Ultralytics 开发的 YOLO&#xff08;You Only Look Once&#xff09;物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型&#xff0c;它建立在先前YOLO成功基础上&#xff0c;并引入了新功能和改进&#xff0c;以进一步提升性能和灵活性。它可…

springboot集成cas客户端

Background 单点登录SSO(Single Sign ON)&#xff0c;指在多个应用系统中&#xff0c;只需登录一次&#xff0c;即可在多个应用系统之间共享登录。统一身份认证CAS&#xff08;Central Authentication Service&#xff09;是SSO的开源实现&#xff0c;利用CAS实现SSO可以很大程…