V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
zwyyy456
V2EX  ›  奇思妙想

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

  •  
  •   zwyyy456 · 2022-07-06 20:41:45 +08:00 · 2864 次点击
    这是一个创建于 630 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开发原因

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

    目前会的

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

    预期功能

    • 基础的 PDF 阅读功能
    • 添加英文生词到 anki
    • mac 与 win 双平台
    • 待定

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

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

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