Hi Hraban,
I compiled a kind of wishlist what we need or look for in a new or enhanced open source PDF viewer, as discussed e.g. at the 2021 meeting.
https://wiki.contextgarden.net/PDF_viewer
Feel free to enhance the wiki page or discuss here.
I think that pdf.js (the Firefox PDF viewer) meets most of these requirements. There are a few requirements that it doesn't meet, but it's open source and written in JavaScript, so we should be able to add anything that's missing. Going down the list on the Wiki:
in general: - PDF 2.0 compatible
It can open PDF 2.0 files, but I doubt that it supports every single feature.
- proper color and transparency display (respect color profiles)
It supports all of the PDF colour models/profiles for vectors, although it ignores embedded colour profiles in images. https://github.com/mozilla/pdf.js/issues/2856 Regular RGB and CMYK stuff works fine though.
- limited JavaScript support (no modification, no file operations)
Yes, although it is quite limited: https://blog.mozilla.org/attack-and-defense/2021/10/14/implementing-form-fil...
- search
Yes.
- update on file change (configurable)
Not by default in Firefox. It works fine in this extension though: https://github.com/tomoki1207/vscode-pdfviewer
- keyboard control for as much as possible (but also menus/menubars)
Yes
- sidebar for bookmarks/ToC
Yes
- SyncTeX support
Not in Firefox, although there are patches to enable it: https://github.com/James-Yu/LaTeX-Workshop/blob/cff1a372/viewer/components/s... https://github.com/tomoki1207/vscode-pdfviewer/blob/92fecdb8/src/pdfPreview....
- accessibility (e.g. alternative text must work)
I've never used it, but it looks like there's good support: https://blog.mozilla.org/attack-and-defense/2021/10/14/implementing-form-fil...
- access to file attachments (lower priority)
Surprisingly, yes.
for presentations: - presentation mode (full screen, no visible controls, on one monitor/beamer of choice)
Yes.
- JS for controlling optional content groups (OCGs, Viewer Layers)
You can toggle all the layers in the side panel. I don't think that you can toggle via buttons or JS though.
- inner- and inter-document links must work
Yes; however, inter-document links are sometimes limited depending for security reasons. I'm sure that this can be configured though.
- multimedia support at least via links (suggestion: use “plain Rich Media” approach with OS’ default player)
I don't think so, although I guess you could include a video file as an attachment.
- transition effects not necessary (but if the developer has fun including them, go on)
No transition effects.
for forms: - fill in
Yes.
- print documents with/without form contents
Yes.
- same-ID fields on different pages must be synchronized
No idea.
- custom checkmarks/radiobuttons should work & display correctly
Usually it works, sometimes it doesn't.
- JS for calculations
Usually it works, sometimes it doesn't.
for annotations (correction workflow; generally just nice to have): - similar to Adobe/Foxit Reader
Reading annotations works, but you can't modify anything.
for development/debugging: - show metadata (incl. XMP), e.g. in a sidebar or dialog
You can see all the "regular" metadata, but XMP doesn't work.
- show fonts metadata (inclusion etc.)
No.
- show PDF Boxes (MediaBox, CropBox, TrimBox, BleedBox, ArtBox) as colored frames, switchable via preferences and menu (bar) item
No.
- check for PDF/A and PDF/X compliance would be nice (integrate VeraPDF?)
- FOSS license
Yes. (Apache 2.0)
- should at least work on Windows, MacOS (preferably 10.14+), Linux and *BSD; iOS & Android versions would be nice
It's built in to Firefox, so it works on Windows, macOS, Linux, and the BSDs. It should also work on mobile, although support is a little spottier there.
- how about (long term) support?
It should be supported as long as Firefox exists.
- Funding
Overleaf uses pdf.js as its default PDF viewer, so they may perhaps be willing to help. ~~~~~~~~~~ I've been using pdf.js almost exclusively for the past few years either via Firefox or VS Code, and I've never really had any problems. The only real issue that I've had is that it gets fairly slow with documents over a few thousand pages long. Otherwise, it seems pretty fast and stable, and it supports nearly every feature that I tend to need. Since it's written in JavaScript, it should be fairly easy to modify, and it should run on nearly everything. -- Max