[HN Gopher] Show HN: I built a free alternative to Adobe Acrobat...
       ___________________________________________________________________
        
       Show HN: I built a free alternative to Adobe Acrobat PDF viewer
        
       I built EmbedPDF: an MIT-licensed, open-source PDF viewer that aims
       to match all of Adobe Acrobat's paid features... for free.  Already
       working:  - Annotations (highlight, sticky notes, free text, ink)
       - True redaction (content actually removed)  - Search, text
       selection, zoom, rotation  - Runs fully in the browser, no server
       needed  - Drop-in SDK for React, Vue, Preact, vanilla JS  Why?
       Acrobat is heavy, closed, and pricey. I wanted something
       lightweight, hackable, and embeddable anywhere.  Demo:
       https://app.embedpdf.com/ Website: https://www.embedpdf.com/
       GitHub: https://github.com/embedpdf/embed-pdf-viewer  Feedback, bug
       reports, and feature requests welcome!
        
       Author : bobsingor
       Score  : 140 points
       Date   : 2025-08-14 15:34 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | billconan wrote:
       | Very nice! I once had a side project with a built-in PDF viewer.
       | My first version used pdf.js, but when zooming in quickly, it
       | felt sluggish and hard to keep the zoom focus in the right place.
       | 
       | So I built my own PDF viewer, this time using pdfium in C++ with
       | Metal for rendering -- here's a quick demo:
       | https://youtu.be/jJMhVn5yzEI
       | 
       | I implemented a tiling technique to balance memory usage and
       | performance. I didn't realize pdfium could be so performant in
       | WebAssembly -- and honestly, I actually prefer developing UI on
       | the web compared to C++.
        
         | bobsingor wrote:
         | Honestly, yours looks even snappier than what I had, the way
         | it's handling zoom feels super fluid. Really impressive work!
         | Makes me want to dig back in and see if I can match that speed.
        
           | billconan wrote:
           | Thank you! Smooth zooming was the main thing I focused on
           | optimizing. I haven't implemented text search yet, that's a
           | whole other rabbit hole, with challenges like stitching text
           | objects together and handling text normalization.
           | 
           | My code runs natively, so users need to download a client and
           | I have to code the rest of the ui in cpp, that's the
           | downside. I did consider a hybrid approach with Electron or
           | Tauri, but dropped the idea to avoid IPC overhead and get the
           | best possible performance.
        
       | lucfranken wrote:
       | Seems to work great!
       | 
       | Little note: when you switch from redaction to view with the
       | redaction tool (red lines) active it stays active in the view
       | mode. Impossible to scroll because it still redacts.
       | 
       | Refresh fixes it.
        
         | bobsingor wrote:
         | Good catch, I'll fix that. On mobile, it's intentional that
         | scrolling is disabled while in redaction mode so you can make
         | precise selections, but if you switch back to the view tab it
         | should definitely exit redaction mode. Thanks for spotting it!
        
       | lysace wrote:
       | The repo appears to contain a copy of Foxit's/Google's pdfium
       | along with a UI and lots of abstraction layers/examples for
       | various JavaScript frameworks.
       | 
       | I'm not a JavaScript developer (perhaps there are cultural
       | differences at play?), but in general I think it would be polite
       | to credit the developers of the actual PDF engine.
        
         | davorak wrote:
         | The repo is marked with the pdfjs and pdfium topics so there is
         | that.
         | 
         | Beyond that, powered by... and similar make sense if the
         | library/engine allows or encourages the behavior.
        
         | bobsingor wrote:
         | Absolutely, and I agree, credit is important. I have a whole
         | section in the docs about PDFium and its origins with
         | Foxit/Google:
         | https://www.embedpdf.com/docs/pdfium/introduction.
        
           | lysace wrote:
           | That's neat.
           | 
           | I would also mention it in the README.md.
        
       | looperhacks wrote:
       | I tried a random PDF that includes an annotation, but the
       | annotation didn't show up. I assume the annotations this supports
       | are no real annotations?
        
         | bobsingor wrote:
         | We already support quite a few real PDF annotations: circle,
         | square, polygon, polyline, highlight, underline, squiggly,
         | strikeout,free text, stamps, and ink. Some types are still on
         | our list, like links, form fields, sound annotations, file
         | attachments, and 3D models. Do you happen to know what
         | annotation type it is in your PDF? I'm curious.
        
       | gurjeet wrote:
       | Gave it a quick try. Annotations didn't work at all in Fierfox,
       | but all annotation types (underline, highlight, etc.) worked as
       | expected in Chrome.
        
         | bobsingor wrote:
         | I haven't had the chance to test annotations in Firefox yet, so
         | thanks for pointing that out. I'll check what's going on there,
         | good to know they're working fine in Chrome.
        
           | grimgrin wrote:
           | If you haven't checked yet, you'll notice:
           | Uncaught ReferenceError: TouchEvent is not defined
           | 
           | https://developer.mozilla.org/en-
           | US/docs/Web/API/TouchEvent#...
        
       | gorgoiler wrote:
       | MIT license is generous. Good for you, and thanks!
        
         | bobsingor wrote:
         | Thanks! I wanted to make it as easy as possible for people to
         | use, tweak, and build on top of it, so MIT felt like the right
         | choice.
        
         | layer8 wrote:
         | The underlying PDFium is Apache 2.0 though, and it looks to me
         | that the present project doesn't currently comply with
         | https://www.apache.org/licenses/LICENSE-2.0#redistribution for
         | that dependency.
        
           | bobsingor wrote:
           | Good point, you're right that PDFium is Apache 2.0. I've
           | updated the project to comply with the redistribution
           | requirements in this PR: https://github.com/embedpdf/embed-
           | pdf-viewer/pull/80/files. Thanks for flagging it!
        
       | slig wrote:
       | Thank you for sharing and being so generous with the licensing. I
       | know this might be way out of scope, but do you have any plans
       | for a "flipbook" visualization?
        
         | bobsingor wrote:
         | Not on the roadmap yet, but I'd definitely be open to adding it
         | if more people are interested.
        
       | NooZ wrote:
       | Very nice! Thanks for sharing. How long are you working on that ?
        
         | bobsingor wrote:
         | Thanks! I've been working on it for about 7 months now.
        
       | typpilol wrote:
       | The mobile site works well. Quite fast and snappy
        
       | lerp-io wrote:
       | the best solution is simply to not use PDF.
        
       | stronglikedan wrote:
       | Nitpick, but _Viewer_ is free and always has been. You 're
       | building a free alternative to Acrobat.
        
       | wewewedxfgdf wrote:
       | I'm curious to know why you built this when the Mozilla PDF
       | viewer exists:
       | 
       | https://github.com/mozilla/pdf.js
       | 
       | Not criticizing because there's lots of reason to build things
       | that exist, just curious.
        
         | majkinetor wrote:
         | Cursory looks tells me that there are some different features,
         | like annotation comments.
        
       | timhigins wrote:
       | Looks great! Diving into the docs I especially liked the idea of
       | a headless React library so I can design my own UI and add some
       | extra components. How difficult would it be to automatically
       | highlight or underline certain terms in the PDF and then render a
       | custom component when I click or hover over the term?
        
       ___________________________________________________________________
       (page generated 2025-08-14 23:00 UTC)