If you're the kind of person who likes the ability to tweak your environment and get things set up just right for you, I'd recommend getting a Kobo and putting KOReader[1] on it. It has the classic OSS problem of bad defaults, but it's very flexible and can be a uniquely nice experience once you get it configured in a way you like. It's mostly written in Lua and has responsive maintainers, so if you're a developer you can extend it even further.
It has great PDF support, including good reflow and note taking support (highlights and text notes). And export support to text/json/html/Readwise.io for those notes.
It also has the best UI I've seen to visualize the structure of a book you're reading.[2]
The biggest downside is that you have to do more file management of your ebooks, since it isn't hooked into a nice cloud like Kindle. I use Calibre for this, and set up an OPDS server for some basic cloud downloading.
It has great PDF support, including good reflow and note taking support (highlights and text notes). And export support to text/json/html/Readwise.io for those notes.
It also has the best UI I've seen to visualize the structure of a book you're reading.[2]
The biggest downside is that you have to do more file management of your ebooks, since it isn't hooked into a nice cloud like Kindle. I use Calibre for this, and set up an OPDS server for some basic cloud downloading.
[1] https://koreader.rocks/
[2] Book Map and Page Browser: https://github.com/koreader/koreader/releases/tag/v2022.01