打造全键盘操作的PDF阅读器

其实我只想要一个非常简单的PDF阅读器,不要很花哨的功能,只要能够:

  1. 速度够快,不要翻一页等半天;
  2. 全键盘操作,不想在鼠标和键盘之间来回倒腾;
  3. 可以改变背景色,深夜的白光好刺眼;
  4. 自由旋转页面,有些PDF的页面简直是太斜了;

用过PDF Expert、PDF Reader、Skim……,发现这些个玩意还没有系统自带的Preview好用。轮子不够,看来只能自己造了,谁叫咱是码农呢😄

最接近我需求的是Mupdf,但是这货问题太多而且需要XQuartz的支持,要X11支持也就算了, 竟然还不能全屏 ,这意味着EI Capitan的Splitview也无法使用。

编译好的macOS执行文件 https://pan.baidu.com/s/1misB9GG

去除X11的依赖,用Cocoa窗口

好在mupdf源代码支持多平台,可以用OpenGL,而OpenGL与Cocoa结合很紧密,所以工程的关键是让mupdf用glfw来建立窗口,具体步骤我在Github上说了很多,这里就不啰嗦

修改Bug,增加快捷键操作,添加功能

这开源代码的Bug就是多啊,不过不要紧,谁叫咱是码农呢?修改的几个主要问题在Github上我也提到了,咱说如何使用吧

命令行打开,键盘阅读

打开文件的正确方式是在终端中运行如下操作:

  mupdf-gl filename.pdf <page>

干嘛不来一个Bundle App?再设计一个菜单,从菜单中选择打开文件,最好再搞一个Command+O之类的快捷键,再整合到Findle的右键菜单……
等等,咱是码农,对吧?码农打开文件的正确方式难道不是在终端中输入命令的吗?

左边是打开的PDF
Splitview方式
左边是裁边之后的效果,右边是原始页面

运指如飞

Vim 常用键大部分都有,我又整合进去了一部分
h,j,k,l,你懂的
空格键,d,u,b当然是上下翻页了
+,-放大缩小
x,y 进行左右或上下裁边,如果裁多了,按大写X,Y缩小裁边区域
w,W,H 自适应宽度和高度
q一键退出,别乱按
m,t书签跳转
g前面加一个数字就是跳转到指定页面
[,]左右旋转,微调不正的页面,这个太有用了
v 反转颜色
还有好多,你自己摸索下😊

旋转页面之前
旋转之后
反转颜色

背景色任意换

由于是采用OpenGL绘图,换一个背景色那是相当的Easy!启动的时候指定RGB就行

  mupdf-gl -C 0xFDF6E3 filename.pdf
经典的Solarized light
  mupdf-gl -C 0x00F600 filename.pdf
随意来一个绿色

源代码

想自己编译的可以在Github下载,最新的代码都在 https://github.com/dean-wong/Cocoa-mupdf ,有空就帮忙点一个Star吧_

推荐阅读更多精彩内容