如何开发一款自己的 PDF 阅读器

2022-07-06 20:41:45 +08:00
 zwyyy456

开发原因

目前的本地的 PDF 阅读器不能满足自己阅读英文 PDF 时,“划词选中英文单词并添加该单词和单词所在的句子到 anki”并生成卡片的需求,所以准备自己开发一个 PDF 阅读器,顺便锻炼自己的开发能力。

目前会的

楼主准研二,本科学机械的,只会一点 C++和 python ,Java 会非常小的一点,毕设的时候写了一点 Qt ,不懂前端,C#。

预期功能

楼主码力很弱,基本只用 keil 写过嵌入式的项目和刷 leetcode 写单独的 cpp 文件,没有单独开发过这种项目,所以还请各位指点一下技术路线,或者有什么推荐的开源项目可以参考吗?

3129 次点击
所在节点    奇思妙想
18 条回复
noe132
2022-07-06 21:02:53 +08:00
给个思路
用 pdfjs 做二次开发会相对比较简单
8bryo4p5qn758Dmv
2022-07-06 21:07:19 +08:00
macOS 右键菜单有个 services 列表,可以自己开发功能
zwyyy456
2022-07-06 21:15:47 +08:00
@noe132 好的,我去研究一下,因为之前用过 Firefox 自带的 pdf.js 看 PDF ,效果不好,所以自己开发时就没想到这个
singerll
2022-07-06 21:24:42 +08:00
exec “adobe pdf”
SorryChen
2022-07-06 21:28:14 +08:00
感觉如果码力欠缺还是研究研究绕一步,如果用 raycast utools 这种类似工具的话,写对应的插件比较好。PDF.js 体验属实不太好。PDF 阅读器市面上一票票公司写出来的,体验都不咋地,更不用说咱自己从头捣鼓了是不是。
darklights
2022-07-06 21:30:13 +08:00
PDFium

不过我觉得做个 chrome 扩展更为现实。
kkocdko
2022-07-06 21:57:53 +08:00
用 PDF.js 应该是最方便的了,稍微学点 JS 就行。
我用它弄了一个自用的小 Demo ,可以自动检测并隐藏 PDF 页面边距(宽边距很浪费屏幕空间)。思路是检测页面的 TextLayer 位置。
注意不要手动用 PDF.js 的 API 去渲染,只要拿它给的 PDF Viewer 修改下就行了,省事。
jorneyr
2022-07-06 23:32:15 +08:00
OCR 截图识别文本,然后在鼠标出弹出操作菜单,不需要去识别 PDF ,只与界面上的文本相关,这样难度会降低很多。
greatghoul
2022-07-07 09:41:20 +08:00
zwyyy456
2022-07-07 09:52:32 +08:00
@greatghoul 如果只是 anki 扩展的话,online dictionary helper 更好用,只是用浏览器看本地 PDF 效果很糟糕
SeanTheSheep
2022-07-07 10:06:05 +08:00
“划词选中英文单词并添加该单词和单词所在的句子到 anki”并生成卡片的需求。听上去不是太难,你需要自动添加到 windows 端的 anki 吗?我竟然有点想试试(我有点 C#经验)
SeanTheSheep
2022-07-07 10:15:16 +08:00
OP 如果码力不太行我不建议上来就搞双平台,当然坚持双平台 Electron 一把梭好像也没毛病。如果单走一个 win, 你可以试试 winform 快速写一个 demo, 看看能不能正常跑通功能。还有就是如果你双平台都需要支持自动导入到 anki ,你需要确认 win 和 mac 两边不同版本的 anki 功能的实现方式是不是不一样,如果一样还好说,如果不一样那你的实现也大概率需要写两遍。
zwyyy456
2022-07-07 11:35:17 +08:00
@SeanTheSheep 目前是打算用 Qt+pdf.js 写来着,双平台倒不是算必须,严格来说 mac 优先级可能还高一点,功能的话其实就是参照 chrome 上的"online dictionary helper"这个扩展;不过你说的对,确实应该先弄好单独一个平台再考虑跨平台的事情。
SpecterShell
2022-07-07 22:39:28 +08:00
沙拉查词,既有 PDF 阅读器也有 Anki Connect 。
用 Qt 的话,可以看看 MuPDF 。
Daiwf
2022-07-08 17:38:24 +08:00
如果打算从头撸一个也太难了吧。。你看下 pdf 结构的描述文档。直接就劝退你了。还是用 pdf.js 二次开发比较靠谱
yqf0215
2022-07-08 23:27:34 +08:00
好奇楼主最后采用的技术
oreoiot
2022-08-04 08:45:03 +08:00
插眼。目前在用 marginnote
clemente
218 天前
还在开发吗~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX