从零编写一个 Web 版 PDF 阅读器:一次"家常软件"实践
On Writing a PDF Reader
Nate Meyvis 因找不到兼顾速度、笔记标注与文件导航的 PDF 阅读器,自己动手做了一个基于 Web 的阅读器,并加入 Vim 风格键位。他表示 AI 让开发过程快得出乎意料,仅为了改善那份促使他动手的 13 页 PDF 的阅读体验就已值得。他计划按需继续微调,并将其视为"家常软件"理念的一次实践。
Nate Meyvis
07 Oct, 2026
In reading about John von Neumann, I was reminded that I've never found a PDF-reading system that's truly comfortable to me. So I made my own Web-based PDF reader. It is far from perfect, but is already my favorite PDF reader.
Notes:
- There are many fine PDF readers out there, but I've never found one that (i) is very fast, (ii) handles note-taking, bookmarking, and highlighting comfortably, and (iii) makes file navigation easy.
- I also want keyboard-driven navigation and highlighting, so I implemented a bunch of Vim or Vim-inspired keybindings.1
- This is a good example of "home-cooked software" in Maggie Appleton (et al.)'s sense, though with a different emphasis from most of the home-cooked-software crowd. Part of making software for a smaller audience is, of course, being very attentive to that audience. But it also involves not being attentive to other audiences, and also not worrying about regulatory issues that come up only in non-local contexts. A home-cooked meal can have allergens without warning labels. I'm allowed to cook with a dog in my kitchen.2 I can make pancakes the way my family likes them, without regard to anyone else's preferences. I can put hacky Vim keybindings in my PDF reader, even if columns don't line up nicely and many other edge cases will break them. I can ignore 99% of a PDF reader's reasonable features and just make it fast.3
- I use AI every day and heavily, keeping careful track of new tools and how good they are, and I was still surprised at how quickly and easily this came together. The effort would almost have been worth it just to improve the experience of reading that single 13-page PDF that prompted me to make it.4
- I plan to keep tweaking it, but only as necessary. This is another analogy with home cooking. Home cooks are often quite eager to refine their meals, but usually work on a specific dish when they have independent reason to be cooking that dish.
- The experience made me a bit disappointed in myself. How many times in the last year have I wrestled with a PDF reader and not even considered making my own? For all my eagerness to make things, it appears there was a part of me that simply accepted that reading PDFs must be annoying and clunky.
It turns out that Zathura and others do this! But I wanted something that (i) is Web-based, (ii) has the other features I want, and (iii) I know about.↩
I don't, in fact, have a dog. But it's nice that I may cook with a dog.↩
Not that performance and feature-richness are always at odds, but sometimes it is; this is closely related to the performance-generality tradeoff.↩
Some would say that this points to a future where AI will create PDF readers per-PDF (or at least for different subsets of PDFs or otherwise ad hoc). I really don't know, but this has definitely made this sort of prediction a lot more vivid and plausible to me.↩
来源:Hacker News · natemeyvis.com