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

作者: 混沌边缘的伊卡洛斯 | 来源:发表于2016-08-23 19:20 被阅读8793次

其实我只想要一个非常简单的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吧_

相关文章

网友评论

  • huge823:我想用E键(正好位于D上方)作为“上一页”按钮;请问是否支持类似.vimrc那种配置文件的方式。另外,是否支持“连续单页”显示?每次翻页都生硬地跳转,看不到上文了,体验不好。
  • ff3b695d72c7:楼主您好,请问一下在终端输入命令之后,MengdeMacBook-Pro:~ meng$ mupdf-gl aaaa.pdf 3
    怎么解决这个 -bash: mupdf-gl: command not found 呢?谢谢!
    ff3b695d72c7:@卡里斯玛 谢谢啦!其实是想改背景颜色,以为一定要在终端里才能改呢,后来打开app的包内容看见里面有个终端文件,就打开了,发现按C也可以直接改背景颜色...不过好遗憾还是不知道怎么用终端来改颜色,加了程序的全路径也只能打开程序本身,然后让我点击选择PDF文件,无论如何在终端里输入文件名(把执行路径也改为文件所在的Desktop了)却说没有这个文件或路径...anyway~谢谢大神的软件~不过我发现打开我用“预览”看过并做过标记的PDF,里面被我用色笔拖过的句子在Mupdf里就看不见颜色底下的文字...
    混沌边缘的伊卡洛斯:@乌巫阿止 哈哈,Mac和Linux一样是需要指定程序路径的,有两种选择:1. 将程序放到系统环境变量PATH所指的目录中;2. 在执行文件前加上全路径。
    要是这个不会的话,你就下载我在百度盘上编译好的bundle app,双击运行就是了。
  • zhifenx:楼主您好,我现在需要基于mupdf做一个macOS版的pdf阅读器,请问怎样编译出macOS所用的静态库呢?能简单说下思路吗?
    zhifenx:@卡里斯玛 嗯 谢啦 已经搞定了
    混沌边缘的伊卡洛斯:@zhifenx mupdf的核心功能就是一个功能库,将mupdf目录下的文件打包编译成lib就可以了,UI程序包含头文件,链接的时候指定库文件就行
  • 19fyo3:求 vim 配置
    混沌边缘的伊卡洛斯:@坚硬的肉山 哈哈,眼睛真好!效果是靠了几个插件,主要是Airline、signify、再加上Powerline字体
  • jay0063:nice
  • bigzhu:给力,找了好久了。必须去star一下了
    混沌边缘的伊卡洛斯:@bigzhu 用‘o'可以打开outline目录,不过还是需要用鼠标点一下目录跳转
    bigzhu:@卡里斯马 编译好了装上了,就是没有目录跳转有点麻烦
    混沌边缘的伊卡洛斯:@bigzhu 谢谢,使用中有什么问题就反馈给我吧😃
  • 浮婴:程序员得这样,轮子不行就自已造一个!
  • fanai:可以的
    fanai:@卡里斯马 额 我只是觉得楼主这样鼓捣挺好的啊
    混沌边缘的伊卡洛斯:@fanai 是说你的电脑上能正常work?
  • oraoto:👍在linux下用过zathura,也是全键盘操作,效率的确高
    混沌边缘的伊卡洛斯:@oraoto Mac 下找了好久都不满意

本文标题:打造全键盘操作的PDF阅读器

本文链接:https://www.haomeiwen.com/subject/yrlnsttx.html