[HN Gopher] Show HN: Free, in-browser PDF editor
___________________________________________________________________
Show HN: Free, in-browser PDF editor
Add text, input boxes, pictures, signatures, delete pages, merge
PDFs and password protect them. All happening in the browser, 100%
free and no sign-up.
Author : philjohnson
Score : 705 points
Date : 2025-05-03 18:15 UTC (1 days ago)
(HTM) web link (breezepdf.com)
(TXT) w3m dump (breezepdf.com)
| jdjdjdjdjd wrote:
| Seems broken to me. Uploaded a pdf but I cant scroll down to see
| the bottom of the pdf, its just stuck... tried with FF and
| safari, same deal.
| philjohnson wrote:
| Fixed now!
| behnamoh wrote:
| doesn't "edit" PDF text, just adds more.
| philjohnson wrote:
| yes, that's why the description says "add text" not edit :)
|
| there aren't existing packages that can edit existing PDF text
| in the browser, but I'll do it myself sometime soon
| kwanbix wrote:
| The website says: Edit PDFs Freely & Privately, Right in Your
| Browser.
| wild_pointer wrote:
| That's the problem with all the pdf editors available out
| there. I guess adding stuff is much easier than editing
| existing stuff which you didn't add, and can be laid out in a
| gazillion ways, because PDF is a format for viewing and
| printing, not for editing.
|
| I had a period when I worked with lots of documents. I could
| only find one fairly decent PDF editor which deserves to be
| called that way. I could use it to open any PDF and delete an
| existing element, or change text in an existing field.
| Sometimes things behaved funny, for example a text field can
| have each letter in a separate block, but I assume the tool did
| what it could within reasonable effort. It worked fine for me
| overall.
| jbarrow wrote:
| Editing text in PDFs is _really_ hard compared to other
| document formats because most PDFs don't really encode the
| "physics" of the document. I.e. there isn't a notion of a
| "text block with word wrapping," it's more "glyphs inserted
| at location X with font Y."
|
| If the PDF hasn't been made accessible, you have to do a lot
| of inferencing based on the layout about how things are
| grouped and how they should flow if you want to be able to
| make meaningful edits. Not impossible (Acrobat does it), but
| very challenging.
|
| It's part of the legacy of PDF as a format for presentation
| and print jobs, rather than typesetting.
| benatkin wrote:
| It's still what a _PDF editor_ , as it says in the title,
| would do. With a quick Google I found one that I hadn't
| heard about before, and it let me edit some text and save
| it for free.
| TechDebtDevin wrote:
| Ask yourself, why would someone spend money on bandwidth
| for me to download something for free...
| philjohnson wrote:
| PDF editor is used as a broadly encompassing term. Yes,
| other tools can edit existing text, but they upload your
| PDF to their servers, so it's not private if that's
| something you care about.
|
| There isn't anything off the shelf that enables editing
| existing text in the browser, but it's something I'll
| build from scratch. So you'll be able to edit existing
| PDF text without compromising privacy.
| wild_pointer wrote:
| This can if I remember correctly (can't check now), but
| it's a POC and not a finished product
| https://github.com/ShizukuIchi/pdf-editor
| otsukare wrote:
| Yes, and alongside formatting challenges, PDFs commonly
| only include the glyphs from the font that are actually
| used in the document.
|
| So if you had PDF with "Hello World" on it, you could
| feasibly change it to "Hello Hello", but wouldn't be able
| to change it to "Goodbye World" (as the glyphs for "G",
| "b", "y", and "e" are not included in the PDF)
|
| Sure, you could do a bit of detective work to figure out
| which font it was from the glyphs or something and lookup
| and insert new glyphs into the PDF, but I can't imagine a
| generic PDF editor being capable of doing this for you.
|
| Some editors get around this but just straight up switching
| the font(s) for the whole PDF, so they'll look different
| after saving.
| 2Gkashmiri wrote:
| Sejda.com does it. Though its free one is severely crippled
| layer8 wrote:
| PDF is really not a format designed for editing, of text
| content in particular. It's only possible in limited
| circumstances.
| hnick wrote:
| PDF was basically created as a final presentation format,
| it's essentially append-only by design, which is why you hear
| so often of redactions just marking up a white/black box over
| text.
|
| You can edit text streams, which needs a
| decompress/recompress, messes up all the object reference
| offsets for the entire file, potentially adds or removes
| characters to the subset font, which may not be referenced by
| the glyphs but a number instead to intentionally break
| copy/paste/scrape (e.g. 'a' is not 'a' in the text stream,
| but a random number), etc. Assuming the text is even marked
| up as strings, and not individually positioned characters
| with nested offset co-ordinate scaling to further muddy the
| waters.
|
| The fact so many people want to edit PDFs probably indicates
| a design flaw on Adobe's side, when considering what
| customers really want.
| matsemann wrote:
| What I miss in free alternatives is the ability to redact. Not
| just by placing a black bar above, but such that the text also
| leaves the PDF. Shouldn't even need to reflow other text as
| mentioned in another comment, as things would otherwise stay
| the same.
| philjohnson wrote:
| check out pdfredactoronline.com I also built that. I had to
| make it separate for now as it's using MuPDF JS library which
| has APGL licensing, but I might add it in here if it seems I
| can add it while still complying.
| matsemann wrote:
| Will check it out, thanks!
| a1371 wrote:
| I like it! It has most of the features I need in a PDF doc and
| nothing of the bloat. The only features missing for me are:
| callout text comments, redact text, and flatten PDF. It's snappy
| and pretty easy to understand. Good job
|
| As much as I'd like it, we all know it can't remain "100% free
| and no sign-up". What's your plan to avoid enshitification?
| philjohnson wrote:
| Thanks! Text comments, redaction and flattening are definitely
| features I'll add.
|
| One way it'll avoid enshitification is that I have no VCs or
| anything like that, it's just me. So I only answer to actual
| users.
|
| My hunch is that while PDF editing is something people commonly
| do, most people probably don't want to pay for it, at least for
| basic features. My plan is to add Google Adsense, but in a way
| that is non-obstructive/intrusive.
|
| Depending on feedback, I might add a paid plan for much more
| advanced features if there's demand. But all the features you
| mentioned that are missing, as well as all other basic
| features, will always remain free. Since all the editing
| happens in the browser, it's a win-win for privacy and lower
| resource utilization. I just have to render the webpage. It
| runs on a low cost VPS, so it costs me almost nothing to keep
| this software running. Given that, there's no current or future
| costs that would give any reason to remove free features.
| colesantiago wrote:
| > One way it'll avoid enshitification is that I have no VCs
| or anything like that, it's just me. So I only answer to
| actual users.
|
| > My plan is to add Google Adsense, but in a way that is non-
| obstructive/intrusive.
|
| Please do not do Google ads.
|
| Not only that this ruins the privacy of the users and further
| entrances Google's reach, but it further leads to
| enshitification which is what we don't want.
|
| Perhaps maybe a small tiny sponsor banner may be better.
| philjohnson wrote:
| Fair point. I added a contact email in the upper right for
| feedback and sponsorship. Let's see what happens
| moffkalast wrote:
| You'd think at this point there would be a dozen solid
| competitors to Adobe Acrobat. You'd really fuckin think so.
|
| And yet filling out a pdf and signing it with a certificate (aka
| the bog standard procedure for much of modern bureaucracy) is
| still too much to ask for any pdf software on linux. It just
| doesn't exist. How?
| cbracketdash wrote:
| I use LibreOffice Draw
| crazygringo wrote:
| Does that do a perfectly accurate import?
|
| Whenever I import PDF's into drawing programs, add something,
| and then export, something always seems to get messed up.
|
| Whether it's font glyphs, or font spacing, or something to do
| with layer ordering.
| okanat wrote:
| It doesn't except very trivial things.
| tap-snap-or-nap wrote:
| Why did I never think of this? Thanks!
| JLook wrote:
| I use Scribus to edit PDfs https://scribus.net
| speerer wrote:
| Weird: Your link is broken for me, but typing in exactly the
| same text to the address bar resolves perfectly.
|
| Is it somehow filtering out referrals from this site?
| cess11 wrote:
| Looks like they have a cert for https://*.scribus.net, but
| not for https://scribus.net.
| sgc wrote:
| Their link redirected to www.scribus.net for me, perhaps
| somebody saw this and fixed the config?
| sgc wrote:
| The best I have found that does this is Master PDF Editor for
| Linux. Unfortunately not free or open source, but it is good.
|
| https://code-industry.net/masterpdfeditor-help/certificate-m...
| Propelloni wrote:
| Gnome's Papers and, of course, KDE's Okular sign PDF without a
| hassle. If you need to edit PDFs, too, MasterPDF [1] is a solid
| choice. Not quite PDF X-Change in power or Acrobat Pro in looks
| it is sufficient for daily tasks.
|
| The real obstacle to digitally signing is bad support for Linux
| by the card reader vendors, as usual.
|
| [1] https://code-industry.net/masterpdfeditor/
| layer8 wrote:
| For similar reasons that no fully compatible MS Word clone
| exists: very high complexity of the format, underspecified
| format details, and undocumented implementation algorithms.
| hnick wrote:
| Even if the format is understood, it's also very much a case
| of Acrobat handling extremely badly formed PDFs instead of
| erroring out if it were strictly adhering. If you've ever
| seen a save prompt when making no changes, that happened.
|
| "It works on Acrobat" was something we got told a lot from
| clients sending us PDFs that were broken according to the
| official spec - we just had to deal with it.
| layer8 wrote:
| Yes, and the same is true for MS Word. "Undocumented
| implementation algorithms" was meant to subsume that
| aspect.
| philjohnson wrote:
| Right now the signatures are digital ink, but I plan on adding
| signatures with certificates so it's more official.
| okanat wrote:
| It is similar to the lack of a perfect MS Office with full VBA
| support, or the lack of well-designed CAD software for 21st
| century or the lack of industry-grade photography software
| someone can earn a living from, or the lack of reverse-
| engineering software that has the exact integration and full
| capabilities of IDA. It is sufficiently hard to get it right,
| so people who are smart and determined enough to solve PDF
| editing problem are asking for a return on their investment.
|
| PDFs are final produce of a rendering process. They don't have
| nice text or image elements you can move around as a unit. The
| rendering process explodes the source material into thousands
| of unconnected objects. Fonts are separated into their glyphs
| so you need to have legal access to a bunch of very expensive
| fonts to just to write the correct heuristics. You need good
| algorithms to reverse the layout and even reverse engineer
| entire documents to rearrange text content. It is stupidly
| expensive to develop in and hire for this niche. So nobody will
| release their very expensive heuristics in the wild.
|
| Btw, closed-source alternatives to Acrobat exist. I like
| Tracker Software's editors a lot. There is also Foxit and
| Master PDF. The latter two work under Linux but their UI can be
| janky since they ship their own UI libraries.
| jbarrow wrote:
| Wonderful! Inserted form-fields show up in Preview and Acrobat,
| which is not a trivial task. I run a little AI-powered tool that
| automatically figures out where form fields should go
| (https://detect.penpusher.app) and robustly adding form fields to
| the PDF was the hardest part.
|
| Fwiw, I do see the issue with being unable to scroll down across
| both Safari and Chrome.
| philjohnson wrote:
| Thanks! I fixed the scrolling issue
| cbracketdash wrote:
| Scrolling is broken. Also for modals, it'd be nice to be able to
| click anywhere on the screen to close it (or pressing Esc) rather
| than just pressing "cancel".
|
| Also for text, different fonts is a necessary requirement (and
| bolding, italics, underline, etc).
|
| Also, it seems like I can't edit text boxes after creating
| them... I can't even tell if I've selected the text box (an
| outline would be nice).
|
| Also the confirm modal for deleting a page is realllly annoying.
| You should just have it automatically delete the page and create
| an undo feature. (Basically store the original PDF, and store all
| the "actions" a user makes in an array, and then undo/redo the
| actions to the original pdf).
|
| Also the arrow to close the page overview on the left side of the
| screen is very unintuitive. Why does the entire page shift to the
| left? The only reason I'd use that feature is to see my centered
| page more clearly. On this topic, a zoom feature is super
| important too.
|
| Overall, the concept of a privacy-based PDF editor sounds really
| cool! Just note that for users to actually make a serious switch
| to this, you must at least match 1/4 of the quality of other PDF
| services like ilovepdf.com or smallpdf.com.
|
| Good luck!
| philjohnson wrote:
| Scrolling is now fixed! And just updated so that if you click
| outside modal it closes. Working on update now so you can edit
| text you've already added.
|
| Agree with you regarding fonts, bolding underlining etc. and
| having instant page deletion with undo/redo. Will definitely be
| adding soon.
|
| Fixed the arrow closing the preview pane so that the page stays
| centered.
|
| I plan on adding a lot more features so that it's on par with
| ilovepdf.com and smallpdf.com. The libraries I'm already using
| support many of the features they have, so it'll be easy to add
| them while keeping everything fully in the browser.
|
| Thanks for the feedback!
| cbracketdash wrote:
| You're very welcome! Thanks for building this out! I look
| forward to using it :)
| nizarmah wrote:
| This is really nice! Kudos.
|
| Small request: When I have a document open, ask to prevent
| accidentally closing the tab.
|
| Large request: Resizing pictures and signatures.
| philjohnson wrote:
| Thanks!
|
| Ask to prevent accidentally closing the tab is a great
| suggestion, I just added it!
|
| Resizing pictures and signatures is definitely something I'll
| add very soon.
| speerer wrote:
| Nice work. I've been building something lately to manipulate PDFs
| in the browser for privacy, although it's quite a different use
| case.
|
| I think I see you're using pdf-lib and jspdf - both great
| libraries, and I'm using both, but:
|
| (1) Have you seen the recent WASM compilation of MuPDF? I am also
| using it for some functions and find it really excellent with
| accessible APIs and highly functional. Worth an try!
|
| (2) We chose different forks of the (unmaintained) pdf-lib - is
| there a reason you went with `pdf-lib-plus-encrypt`? I chose the
| cantoo fork, which seemed well-maintained to me - but I didn't
| research many others so would be interested to know if there is a
| good reason.
| philjohnson wrote:
| (1) Yes, I am very familiar with the WASM compilation of MuPDF.
| It's got a lot of great features. I actually built another
| product pdfredactoronline.com that does redaction fully in the
| browser using the MuPDF WASM compilation. The reason I don't
| use it in BreezePDF is MuPDF has an APGL license which requires
| open-sourcing any code that uses their software. Which, I guess
| technically anything fully browser based is essentially open
| sourced :) so perhaps I could use it here.
|
| Since a lot of the basic functionality I've added so far is
| also covered by more permissible packages like the ones you
| mentioned, I've started out just using those. But thanks for
| bringing that up, I'll revisit using MuPDF for redaction and
| other features
|
| (2) I went with pdf-lib-plus-encrypt because the original pdf-
| lib doesn't have functionality for password-protecting PDFs,
| and since pdf-lib-plus-encrypt does, I used it so I could have
| that feature
| speerer wrote:
| Thanks for the insight. Yes, the AGPL isn't a problem for me
| - I didn't check your licence as I could just view source :)
| sroussey wrote:
| Is your code available?
| what wrote:
| I would assume not based on their objection to AGPL
| libraries.
| philjohnson wrote:
| not yet available as open source. Open-source has two
| main purposes I think: trust, and customizing/integrating
| it into other products.
|
| On the first part, since everything happens in the
| browser, anyone can see the html/javascript and inspect
| the Network tab and see that no network requests are made
| that send their PDF anywhere.
|
| And on the second part, I think most people who use the
| software aren't developers and won't want to modify it,
| and I don't particularly see a use case for integrating
| this software into another one, outside maybe an internal
| corporate scenario.
|
| Though, maybe I'll add something where you can pay to get
| the desktop version, similar to what Sejda does.
| yusina wrote:
| First of all, great tool!
|
| > trust
|
| That's exactly right. The main attractiveness of your
| tool comes from the "never leaves your browser",
| insinuating that other similar services do send your data
| to a server and then who-knows has access to your
| sensitive data. I really like that angle. But we don't
| know you. We can use some tools to check that nothing is
| transmitted today. But who knows about the future? Maybe
| you change your mind? Maybe once your service becomes
| popular you sell it for $$$ and the new owner silently
| pushes things to a server "totally securely, we promise"?
| Or is even malicious?
|
| > anyone can see the html/javascript
|
| Seeing minified javascript is not the same as open
| source. Nobody would claim that the google doc UI is
| "open source".
|
| If you open source this and it turns out as great as it
| seems then it can make you world famous. If you keep it
| closed then it will probably disappear in the vast sea of
| similar sevices, server-based or not (since avg Joe
| doesn't know the difference and doesn't care). It's your
| choice to make.
|
| > Though, maybe I'll add something where you can pay to
| get the desktop version
|
| Ah, thanks for your honesty here. An angle describing
| your project in a more bad-faith way could now be that
| you run beta-testing of your proprietay software through
| this "free" service and intend to turn it into a closed
| pay product once the public testing has fleshed out the
| main issues. That's obviously something you are free to
| do instead of an open source product emphasizing freedom.
| philjohnson wrote:
| Thanks!
|
| > trust All fair points that you're making. I see no
| reason I would change my mind to send PDFs to the server,
| but I understand your concerns. If I'm reading in between
| the lines of what you're saying, that the way to
| alleviate these concerns is to make it open source?
|
| I think that's a compelling argument, but to play devil's
| advocate if most people realistically working with PDFs
| aren't developers and thus wouldn't go to GitHub to host
| it themselves, then what would change for them to have a
| self-hostable option? If I released a desktop version,
| might the average person would see that as "private" and
| have any privacy concerns relieved, whether it was open
| sourced or not?
|
| There is always a degree of trust you put in any
| company's software you use, and it's up to the company to
| be good stewards of that trust. If they break it, it's
| always bad for business anyways. But there is a point
| that if it was open source, those who have the desire to
| do so can continue using it without any concerns, which
| is fair.
|
| > anyone can see the html/javascript Yes minified
| javascript is not the same as open source, but mine is
| not minified. Plain HTML, CSS and vanilla JS. So given
| that and since all the editing happens in the browser,
| the entire source code is inspectable for anyone who
| wants to see.
|
| Given that the average person editing PDFs is not tech
| savvy, and as you said they don't really know the
| difference between software options, then given that what
| do you see as the utility of open-sourcing, from a
| business or even public good perspective? Genuine
| question.
|
| > Though, maybe I'll add something where you can pay to
| get the desktop version I can see why someone would think
| that, but really at this point I'm figuring out what/if
| there is a monetization method here, and I'm not set on a
| particular path. I don't have any agenda to just make it
| free then close it off. That'd probably be a bad business
| decision anyways. I'm not sure if desktop is something to
| charge for, or if desktop and the whole thing is better
| to be free and open-source along with premium features
| that people can optionally pay for that are outside the
| core scope. I'm still thinking through it.
|
| Ideally, I'll make all core features open-source while
| there are also some extra features people are willing to
| pay for. I'm just still wrestling with even just from the
| public good perspective, for the vast majority of people
| that won't host it themselves how would they benefit from
| open-source versus the core features just being free?
|
| Curious if you have any response to what I've laid out
| here.
|
| Appreciate your thoughtfulness!! You've given me a lot to
| think about.
| malmeloo wrote:
| Open sourcing a piece of software, especially one that
| focuses on a broader audience like yours, can convince
| more people than just developers. The advantages of open
| source are well-known even among less techy people who
| aren't necessarily interested in self-hosting the
| application. It's a good way to quickly earn the trust of
| people who are initially sceptical of your product.
|
| It shows to your potential users that, even if they
| decided not to trust the developer anymore in the future,
| they will likely still be able to use your application.
| Everyone praised Simple Mobile Tools until the developer
| sold it to an ad company. But because it was open source,
| people were able to fork the entire suite of apps to
| continue using them.
|
| There's also a lot of growth potential. draw.io likely
| wouldn't be integrated into so many other products if it
| wasn't open source. It allows them to charge money
| (apparently) for specific integrations, simply because
| everyone is already familiar with the product.
|
| Typst is another good example. Their compiler is free and
| open source, but the web app is not. Certain features of
| their web app require a subscription, which allows them
| to pay the bills. But I (and many other people) wouldn't
| be using and recommending it if the core wasn't open
| source, because if Typst ever disappears, I still want to
| be able to compile my documents. Currently this might not
| matter much for your app since PDF is a universal format
| anyway, but as you flesh out your product, it will become
| more important.
|
| It's difficult to monetise open source software, but so
| much more rewarding if it does work out. And your app
| being targeted at the general public gives you a massive
| advantage, since the potential market is so much larger.
| LamaOfRuin wrote:
| >There is always a degree of trust you put in any
| company's software you use, and it's up to the company to
| be good stewards of that trust. If they break it, it's
| always bad for business anyways. But there is a point
| that if it was open source, those who have the desire to
| do so can continue using it without any concerns, which
| is fair.
|
| I generally agree, but in this case you don't even have
| any meaningful identification on the site to say who
| created the software. I'm not sure how one can trust the
| creator of software if they won't even tell you who or
| what they are. Not even a pseudonym. There is no way to
| say that the person posting as philjohnson here is in
| fact the creator, or if the claimed copyright owner
| "Breeze PDF" is a legal entity that can own copyright.
|
| As it is, with no source or identifying information, my
| default assumption if I happened upon this page would be
| that is is another one of the thousands of sites running
| FOSS software as a service with no added value or
| contribution back, but possibly also scanning every PDF
| it sees for bank/personal/tax/crypto information at which
| point it would decide to send that off to a server.
| NoahZuniga wrote:
| > Which, I guess technically anything fully browser based is
| essentially open sourced :) so perhaps I could use it here.
|
| Open source isn't just about the source code being available
| (and when making web apps, there is often a compile step
| which makes the browser facing code _not_ source code), but
| also about the license under which it is available.
|
| It is in every sense of the word technically not open source.
| tbarbe wrote:
| I created a similar offline tool during covid because I didn't
| want to upload sensitive data to random servers, it's open source
| if that can be useful to someone else :
| https://timothebarbe.github.io/pdfModer (Im not a front end dev,
| the UI is not very good)
| Labo333 wrote:
| Nice! Recently I had the need for pdf censoring, aka not adding
| black rectangles but actually removing the content underneath and
| I still haven't found a suitable tool. Any recommendation? Or
| even python library to do it?
| fortran77 wrote:
| Do you want the black rectangle and the content removed? There
| are "redaction" tools. https://smallpdf.com/redact-pdf
| cbracketdash wrote:
| This likely uploads your content to their servers
| andrecarini wrote:
| Honestly, your best bet for securely erasing data from a PDF is
| by adding the black bars, printing it and then scanning the
| print.
| kmoser wrote:
| You can bypass the messy printing step by just printing the
| PDF as an image, then import or OCR the image as a new
| document.
| mamonoleechi wrote:
| you can do it easily with Inkscape which supports the pdf
| format
| philjohnson wrote:
| I developed another tool pdfredactoronline.com that does this.
| Full redaction/removal of content, not just blacking out text.
| I didn't include it in this tool for now due to the APGL
| license of the library that enables the redaction, but since
| something fully in the browser is kinda open source already,
| I'll see if I can comply with the license while including it in
| BreezePDF
| ValdikSS wrote:
| LibreOffice.
|
| You can open PDF in LibreOffice Writer, just make sure to
| select "PDF - Portable Document Format (writer)" in the file
| selection dialog. This is very important, if you don't do that,
| the file will be opened in LibreOffice Draw instead of Writer.
| johnea wrote:
| Why would you want functionality like this to be in a browser?
|
| Isn't a browser for interfacing to http?
| vntok wrote:
| This tool is hosted on a website, and you access that website
| like all other websites, using a browser interfacing with HTTP.
| layer8 wrote:
| The functionality isn't actually in the browser, it's in the
| files downloaded via HTTP.
| philjohnson wrote:
| It's accessible via a website so that you don't have to
| download anything, and everything running in your browser means
| the PDF never leaves your device, so it's 100% private.
| bigstrat2003 wrote:
| Not having to download anything is not a plus. Much better to
| make an actual application that you download, and which never
| touches someone else's server.
| kzrdude wrote:
| Add a text block - it adds a block that wraps (it's a bit narrow,
| would like to change its size).
|
| When downloading the PDF, the text block is not wrapped, so it
| doesn't match the way it looks in the editor. Tested in Firefox
| (but it's the same in Chromium).
|
| Nice work on the interface and the offline & local way it works
| is very welcome!
| philjohnson wrote:
| Hm, mind describing more about how it wraps? Assuming you're
| referring to text you added? I haven't encountered that myself,
| but will definitely try and fix.
|
| And thanks!
| kzrdude wrote:
| Just that the text block after entering four-five words
| starts on a new line, it's like regular soft wrapping, looks
| like I get a 4cm wide text box to write into. Which is fine
| as a feature, only bug is the two items mentioned (can't
| resize it and doesn't show up in the pdf with the same width
| of the text box).
| philjohnson wrote:
| Wrapping fixed! So now it only goes to a new line if you
| hit enter, which is probably the best approach. So the text
| should render the same in the editor as it does when it
| downloads.
|
| Thanks for the feedback, and let me know if you run into
| any more issues!
| ghostly_s wrote:
| What reason do I have to believe this will still exist in 3
| months when I need it next?
| philjohnson wrote:
| There's no VC backing behind this, it's just me. And it's
| actually a win-win to have all the PDF editing happen in the
| browser. It both offloads resource usage to a local computer
| and makes it private. All I have to do is render the page and
| that's it. Given that, it costs me almost nothing to keep it
| running, so there's no reason to take it down.
| VisualByte wrote:
| Where is the repo? I do not trust the privacy...
| philjohnson wrote:
| I might post the repo, but if you don't trust it you can just
| open the Network inspection tab and you'll see that zero
| network requests are made when you edit a PDF
| kmoser wrote:
| You can also use "offline mode" in Dev Tools to ensure that
| tab doesn't send or receive network traffic. Then you don't
| have to sit there monitoring it.
| VisualByte wrote:
| I do not trust the privacy here...
| maxloh wrote:
| You can monitor Network requests the application made with
| DevTools.
| cbracketdash wrote:
| All the requests made through DevTools seem to only load PDF
| scripts. I didn't detect any POST requests.
|
| Of course, there is no guarantee that this will remain...
| regularly checking network activity before uploading a private
| document isn't too hard
| nestorD wrote:
| Nice! I will give it a try later today.
|
| For people who want a non web-based alternative, these days I use
| Xournal++ (https://xournalpp.github.io/) to do that type of
| edition locally.
|
| What I am still looking for is a good way to clean scanned PDFs:
| split double pages, clean up text and make sure it is in lack and
| white, clean deformations and margin, cut and maybe rotate pages,
| compress the end result.
| fiddlerwoaroof wrote:
| For splitting double pages, this is the best tool I've seen:
| https://github.com/mbaeuerle/Briss-2.0
|
| For the other issues, I haven't found any single good tool, but
| I've stitched together things like unpaper, ghostscript and
| deskew ( https://github.com/galfar/deskew ).
|
| Also, if you need OCR, hocr-tools and Google's Document AI ocr
| API have worked really well for me (I tried Gemini, but you run
| into issues with big documents).
| kevinlinxc wrote:
| I use stirling-pdf for this, ran locally with
|
| docker run -d -p 8080:8080 -e DOCKER_ENABLE_SECURITY=false --name
| stirling-pdf frooodle/s-pdf:latest
|
| Lots of features, OP you should definitely check this out
| theturtletalks wrote:
| Stirling is a life saver, they have a web UI too:
| https://stirlingpdf.io
| throwanem wrote:
| I tossed a legal document at it which was recently of passing
| interest to me, and it looks like embedded fonts still need some
| work. I'm not inclined to share a test case from what I have,
| which relates to a change of name and in any case was not really
| prepared by anyone especially competent when it comes to PDFs and
| their content; I tested with the first, facially void, version I
| was given. But it is possible I'll find more use for this tool,
| and if a shareable test case does come along then I'll do so.
| (And heaven knows with _this_ document format, embedded fonts are
| a total nightmare always, even somehow in programmatic
| _authoring._ I 'm not criticizing!)
|
| On a similar note, a downloadable (single-file HTML or so,
| although these days some kind of HTTP service is a practical
| necessity) version would be nice to have. Low pri even from my
| perspective; it isn't that I spend a lot of time in places with
| no cell signal, so much as just that tethering on an a la carte
| plan gets out of hand pretty quick, since applications aren't at
| all required to honor or even notice the existence of the "data
| saver" option.
|
| This is really neat! Thanks for posting it, I've bookmarked it
| for later use in the "just need a quick tweak" kind of case. I'll
| look forward to seeing how it develops!
| wffurr wrote:
| Fonts on the web are super hard. There's hardly any useful
| browser APIs for the kind of typesetting you need for PDFs:
| itemization, character bounding boxes, font file sub setting,
| etc. To solve or properly, you need to include a lot of code,
| e.g. all of harfbuzz compiled to wasm.
| throwanem wrote:
| Well, that's the thing. Web fonts are hard. PDF fonts are
| super hard. Both at once is...actually maybe not hideous
| these days. Oh, I would not wish the task of devising such an
| algorithm, but the subset of vector fonts supported in PDF
| and that in browsers aren't _totally_ disjoint, I think.
|
| Modern processors can handle the relevant conversion math
| without really waking from sleep, which will no doubt make it
| more frustrating when some W3C third party resource security
| model WG fistfight from 2013 makes it impossible to both
| construct and use a webfont on the client. (There may be some
| hideous blob URL magic, but those are length constrained so
| you could up in N subset nonce fonts bucketing M custom
| glyphs from the source document, with a hideously complex
| fifty-case rewrite for all the p90 ways of mapping fonts in
| PDF (or is that 90 cases and p50?) to render the document in
| the editor. And then have to handle the actual editing cases,
| like what happens when your subset nonce font of a subset
| embedded font doesn't map any character to the keycode you
| just saw, and you want to try to give the user something with
| metrics sorta matching what they wanted instead of Helvetica
| or Times New Roman out of a naively constructed fontset.
|
| I may have worked with PDF in browsers one time too many,
| before. But the idea of using WASM to smuggle real tools into
| this impoverished environment actually makes a lot of sense
| to me...
| philjohnson wrote:
| Thank you!
|
| I'll take a look at improving rendering embedded font support.
| And that's a neat idea to be able to download it for offline,
| I'll give some thought to that. Appreciate your feedback!
| KTibow wrote:
| FYI - using service workers would automatically make it work
| offline and possibly be easier than trying to bundle it into
| one HTML file.
| throwanem wrote:
| Oh, that's an excellent point, especially since this is a
| perfect case for workers more broadly. I've had a bit of an
| app dev interregnum these last or postpandemic years; if
| service worker support has advanced that broadly, then
| that's wonderful news! Not especially _surprising_ news, I
| suspect, but wonderful. Last I afforded close attention,
| the state of play for service workers in iOS Safari
| particularly was "don't bother."
|
| Since I like an iPhone - or have thought at least they're
| least worst for 13 years and counting - you can probably
| imagine how this would have depressed my interest: Even
| though irrelevant here in that touchscreen PDF editing is
| an _extremely_ hard problem and none I 'd expect a solo dev
| to address, just knowing nothing I built with a worker I
| would myself be able to _use,_ has made me not want to sink
| good time and effort into the topic at all. Best case that
| 's all just wasted; worst case, it creates a dilemma I
| might not escape without a new regret.
| philjohnson wrote:
| The service worker functionality can be expressed as a
| PWA! Based on the comments I'm thinking of heading in
| that direction.
|
| As far as touchscreen PDF editing, that is 100% doable
| and something I plan on adding soon. Touchevents are
| supported natively in the web
|
| https://developer.mozilla.org/en-
| US/docs/Web/API/Touch_event...
| dimava wrote:
| You should make your app a PWA [1]
|
| PWAs are basically "installable" pages which open in their
| own browser window and generally can work offline
|
| [1] https://developer.mozilla.org/en-
| US/docs/Web/Progressive_web...
| gus_massa wrote:
| Emedded fonts only embed the used characters, so if ypu want to
| change "John" to "Mary" and there is no capital "M" elsewhere
| in the doccument, you are out of luck. Can this be your
| problem?
| throwanem wrote:
| The mapping is incorrectly decoded and applied such that many
| characters for which glyphs are embedded and applied do not
| show them. It's a pretty common style of PDF mojibake, I
| think, and sometimes appears also with badly subsetted
| webfonts or "icon font" abortions if you disable page fonts
| in your browser settings.
| contact9879 wrote:
| I've been using a tangential but still pdf tool, pdfux.com since
| it was posted here on hn
|
| Thanks for this! I'll definitely add it to my bookmarks
| TheJCDenton wrote:
| Very nice, thank you !
| lutusp wrote:
| A voice in the wilderness, but weren't PDFs originally meant to
| be read-only? Yes, nearly everyone now has a PDF editor, but this
| seems to undermine the original intent behind the format. As
| things stand, we may need to invent a portable document format
| that remains read-only, that fills the purpose PDF was meant to
| fill.
| yair99dd wrote:
| Inkscape!
| neversettles wrote:
| Is anyone building 'Cursor for editing PDFs on the web'?
| hakcermani wrote:
| Really neat. i tried a couple and it worked fine for my use case
| which is mainly adding a signature .. Any chance the signature
| size can be adjusted by dragging a corner ?
| UE2020 wrote:
| Some suggestions:
|
| Pen input (Apple Pencil) is quite choppy, because browsers tend
| to coalesce multiple pen events together, effectively reducing
| the pen's polling rate. You need to use
| PointerEvent.getCoalescedEvents:
| https://developer.mozilla.org/en-US/docs/Web/API/PointerEven....
| Pen pressure support would also make signatures look a lot
| better.
|
| Would also be nice to be able to draw anywhere you want. Right
| now I'm using Xournal++ for pdf annotation but its performance is
| lacking and I'm always looking for alternatives.
| denfromufa wrote:
| My wife hit a wall trying to upload a hefty PDF - every "shrink"
| tool we tried barely compressed the size, and some even made it
| larger! Frustrated by the state of PDF compressors (looking at
| you, Adobe), I turned to LLMs - Claude, Deepseek, and Gemini came
| up short, but OpenAI's o4-mini saved the day with a perfect
| solution. That inspired me to build pdfmini: a tiny, open-source,
| client-side HTML app that crushes PDF sizes right in your
| browser!!! No installs, no fees, zero privacy worries - all your
| data stays on your machine.
|
| Try pdfmini now:
|
| https://den-run-ai.github.io/pdfmini/
|
| Source code for pdfmini:
|
| https://github.com/den-run-ai/pdfmini
| 2Gkashmiri wrote:
| This gave me an idea. You seem to be the right person to talk
| to.
|
| Here is my workflow. Have a bunch of PDFs and images I need to
| combine.
|
| I go to tools.PDF24.org, Merge pdfs, then compress them, then
| more compress them because of size limits, then add or remove
| pages. Then add page numbers.
|
| These are multiple steps.
|
| Could we have a way of defining these terms at start, either
| textual or no-code-like or something where we could define
| stuff like
|
| Take input, merge > compress with greyscale, Max size 1MB, add
| page numbers on bottom right
|
| Or
|
| Convert input to jpg with image size 8cm by 8cm
|
| I know many people who simply fail at such stuff. They just
| throw their hands up in defeat.
|
| Not saying we should have llms do the job but if we could have
| multiple actions so that people could tell the software what
| they have in mind.
|
| People dont just compress PDFs, often merge and then compress.
|
| I recently say pdfux.com but it is not as featureful as PDF24
| but PDF24 crashes a lot.
| Beijinger wrote:
| #!/bin/bash
|
| # Convert images to PDF
|
| img2pdf *.jpg -o images.pdf
|
| # Merge PDFs
|
| pdfunite file1.pdf file2.pdf images.pdf merged.pdf
|
| # Compress
|
| gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4
| -dPDFSETTINGS=/ebook \ -dNOPAUSE -dQUIET -dBATCH
| -sOutputFile=compressed.pdf merged.pdf
|
| # Remove unwanted pages (e.g., page 3)
|
| pdftk compressed.pdf cat 1-2 4-end output final.pdf
|
| # Add page numbers
|
| pdfjam final.pdf --outfile final_numbered.pdf --pagecommand
| '{}' --landscape
| philjohnson wrote:
| I'll be adding compression support for BreezePDF, so this
| can be done in a click
| 2Gkashmiri wrote:
| Merge/compress with Max size / color-greyscale/ remove
| pages / multi format import like PDF and images as input
| / export options/ export into multiple files if file size
| exeeds certain size.
|
| And like my earlier comment, a way to define these
| multiple steps in a flow so that people can do multiple
| steps with a single file without having to learn command
| denfromufa wrote:
| This is very cool, are all these command-line tools open-
| source?
| Beijinger wrote:
| Yes
| 2Gkashmiri wrote:
| You know what. I will share my script in the morning.
|
| I used scantailor go scan a book. That gave out tif files.
|
| So I built a script to convert them to jpg, then merge into
| PDF. Then OCR and add the text layer on PDF. Then compress.
|
| I know this for a niche automation..... web OTOH where
| normies reside and are scared by terminal, it wont work.
|
| Been using pdftk for years now but im only person who can
| use it in my office.
| denfromufa wrote:
| If you can define this as a feature request to pdfmini,
| please submit it on github, e.g. drag-and-drop flow builder
| ugh123 wrote:
| Is this open source? I think the world could use a good free and
| open 'utility' app for PDFs. Its hard to do digital business
| these days without even moderate features needed in PDF editing
| without paying Adobe or non-free online services - JUST TO EDIT A
| DOCUMENT.
| philjohnson wrote:
| It's not open source at the moment, but I would consider it.
| Just have to think through it as once you go open-source it
| doesn't go over too well to go back. So, if I want to open
| source it, I want to be sure.
|
| I'm sure some might like to modify it, though I think probably
| most people aren't developers and wouldn't want to.
|
| There's no VCs or anything behind this, just me, and my costs
| are just a VPS to render the page, and all processing happens
| on the local device. So I have no reason to change any
| currently free features to ever not be free.
| buccal wrote:
| Not open source but free and works in Windows: PDFGear.
| tanepiper wrote:
| Are you planning to open source or make a product? We're working
| with headless content solutions, and despite our best efforts to
| digitise everything - people on the floor still need physical
| copies of things.
|
| Hooking up a good PDF editor for output is hard, but this is a
| nice solution.
| philjohnson wrote:
| No plans to open source at the moment, but I might consider it.
| I just added a Subscribe button to support further development
| of the software and get access to premium features.
|
| Which features (if any) that if added would you be willing to
| pay for?
| tanepiper wrote:
| Essentially templates, driven from a headless CMS with some
| ability to customise and print - instead of having to go to
| the headless CMS, or use some other tool to edit - in browser
| is nice. I've already looked at options but this is a build
| vs buy option.
| philjohnson wrote:
| Based on my understanding of what you're saying, here's my
| idea that I could build:
|
| You would add variables in the interface, and there would
| be a secure sandbox in the client where you can call the
| API of your headless CMS, and with an sdk you could create
| PDF programmatically assigning the respective variables
| with values from your headless CMS API response. Then a
| button to print them. This keeps everything fully private
| in the browser while automating the process.
|
| Would that work? For reference, what would you expect to
| pay for this if you wanted to go this route?
| freeamz wrote:
| Doesn't seem to be working ATM:
|
| Console. Chrome based browser. Uncaught (in promise) wc: Input
| document to `PDFDocument.load` is encrypted. You can use
| `PDFDocument.load(..., { ignoreEncryption: true })` if you wish
| to load the document anyways.
| philjohnson wrote:
| You're encountering this error if the document uploaded is
| encrypted. I previously supported it, but ran into issues re-
| encrypting the PDF when you download. I'll fix this soon so it
| is supported properly. In the mean time I'll handle encrypted
| documents more gracefully. Thanks for pointing the error out
| torwag2 wrote:
| So many smart people out there developing brilliant PDF tools--
| it's truly impressive! And yet... we still have billions of XFA-
| based form PDFs lurking in the shadows. Forgotten. Unopened.
| Untouched. Why? Because almost no tool can handle them.
|
| Where is the hero who will rise to the challenge? The one who
| will finally rescue thousands of office and admin workers from
| the endless misery of XFA hell--a nightmare Adobe created and
| then abandoned in a pit of form chaos years ago.
|
| Seriously, we need you. The world needs you. Be the one who ends
| the suffering. Be the legend.
| worldsavior wrote:
| Why there aren't any PDF editors that support editing the actual
| PDF instead of adding on top of the PDF?
| abanayev wrote:
| Cool! I would have expected a ton of things like this, but there
| really aren't.
|
| If it's free, though, who pays for your hosting?
| philjohnson wrote:
| Me :)
|
| It runs on an very inexpensive VPS. There's no VCs or anything
| with this and since all processing happens on the users device,
| my costs won't really change at all.
|
| Still figuring out potential monetization. Is there anything
| you'd pay for?
| patrick4urcloud wrote:
| very nice !
| billyjobob wrote:
| Please don't use the adjective "free" when describing proprietary
| software. We know you mean "free as in beer" but those outside
| our community may not and it may cause confusion over the meaning
| of free software.
| enether wrote:
| if anything, "free software" should change its wording (when
| referring to freedom/libre).
|
| there's no way you'll ever convince the masses who use software
| to not call it free or appeal to software that's advertised as
| "free".
| jsomedon wrote:
| Any chance to open source this and allow us to host it privately?
|
| Fantastic work btw.
| afranchuk wrote:
| For what it's worth, Firefox has had most of these features built
| into their PDF.js viewer for a while. I believe signatures were
| recently added. I'm not sure whether there's capability to remove
| pages or merge PDFs, though.
| rocketvole wrote:
| pdf.js is also available as an extension on chromium based
| browsers.
|
| I've found that scrolling on pdfs on a high dpi screen using
| the built in chromium pdf reader is extremely laggy so this has
| always been a must-have extension for me.
| wordglyph wrote:
| Great! On Android I couldn't get signature to work. It popped up
| but couldn't sign.
| kengoa wrote:
| Great project! I'm also maintaining a fully in-browser data
| visualisation/analytics tool [1] and I often found it hard to
| convince people that their data isn't sent anywhere. It's funny I
| also say the exact same thing that they can inspect the Network
| tab. As a potential alternative to open-sourcing the codebase,
| maybe a desktop version of the same tool (i.e. an Electron app)
| could help address the privacy concerns if it explicitly states
| that it won't make network calls, although it's a perception
| problem rather than a technical one.
|
| [1]: https://docs.visprex.com/
| philjohnson wrote:
| Thanks, and cool project you've built!
|
| Yeah, you're right on that it's perception problem rather than
| tech. It's interesting because it's much less intuitive to
| inspect the code/network requests for a desktop app which on
| it's face seems less transparent than something on the web, but
| the kicker is that there is no URL that you're accessing it
| from so it feels safer.
|
| I'm thinking now actually if I did a PWA? I think it has the
| psychological benefit of feeling of an offline desktop app
| (which it can function as), but is lightweight and less
| maintenance than an Electron app, while still having the
| benefit of automatically updating when I make improvements
| without needing to manually make updates.
|
| Where I'm struggling on the open-source question is that in the
| PDF use case most of them are not developers and don't know
| what open source is let alone host it lol. And most businesses
| can probably afford to pay a nominal fee to host it themselves
| and modify it if they wish, which many companies offer. It
| would be different if the product was something like a database
| or code package where it's always going to be a developer using
| it.
|
| While open source might actually have more "freedom" for people
| to modify it for free initially, in a way it can be more honest
| for a developer with any commercial intentions to not open
| source something while offering paid ways to modify the source
| code, as we're seeing more and more that companies start out
| with a very open source product that they then revert once the
| community has helped develop it. Not that it needs to happen
| that way, but with commercial aspirations one needs to be
| careful as something becomes popular, it becomes too tempting
| to take back once open-source parts.
|
| Forgive the wall of text here, I'm thinking out loud haha.
| Appreciate your comment!
| kengoa wrote:
| Yes as dimava commented above a PWA would be a great
| alternative.
|
| > in a way it can be more honest for a developer with any
| commercial intentions to not open source something while
| offering paid ways to modify the source code
|
| I appreciate that you made your commercial intentions clear
| in the comments and I agree that you don't want to walk back
| your license as it definitely leads to backlash. I think
| developers (i.e. people on HN) tend to trust open-core models
| more where there's a clear separation between the core open-
| source components and a paid offering but I guess you don't
| have to overindex on those given the general audience of this
| tool.
|
| I don't know what your ultimate monetization goal is, but in
| my opinion one realistic path is an one-time only payment of
| some reasonable amount with the full feature as opposed to
| subscription (I saw your Stripe link in the source).
| aziaziazi wrote:
| Another alternative proposition to test data (non)upload is to
| ask your user to load the app, shut their device connection off
| and then use the app. The more cautious one will close the tab
| before switching the connection on.
| dimava wrote:
| I'm 50% sure adding a "Install offline app" button that
| installs PWA would be enough to make them believe otherwise
|
| Add a "Check for updates" button that redirects to chamgelog
| page in browser for extra points
| philjohnson wrote:
| This is a great idea. I was actually just suggesting PWA with
| opt-in updates in another comment I was just replying to, so
| it's affirming to hear someone else suggest it as well. Love
| the changelog piece.
|
| Now the question is if people would be willing to pay.
| Perhaps it could be a nominal one-time payment to get the PWA
| and updates for up to a limited amount of time, or monthly
| amount to get updates indefinitely.
|
| And maybe the URL accessed web version stays free with the
| core features, and PWA has benefits of both offline and some
| extra features.
|
| Would you be willing to pay for something like this?
| chfritz wrote:
| Love the idea. However, there is no guarantee that the no-upload
| will not change. Which begs a question: wouldn't it be great if
| browsers provided a guaranteed "offline only" mode? Since they
| don't, I personally would prefer downloading this app as a
| standalone electron (or similar) app, or a docker container where
| I could disable Internet access.
| ironmanszombie wrote:
| It's a great idea indeed. But the paranoid _like myself?_ would
| probably not recommend it as it runs on...well...a browser. I'm
| not at ease with the chance that a code change someday would /
| could allow a copy of my file to be uploaded anywhere.
|
| As for having the browsers run in "offline mode" (proxy equal
| 127.0.0 1?)...neat but I would vote against it. My fridge just
| needs to keep stuff cold, my toaster should serve bread, my
| Internet browser should not be an app.
| reyqn wrote:
| You could use firefox containers to redirect a tab to
| localhost.
| philjohnson wrote:
| Thanks!
|
| The "offline only" app could be a PWA where you can access if
| if you're offline but I could even enforce disabling network
| requests in the code itself. Seems like the most
| straightforward solution to me. Could even make updates opt-in.
| Would keep it lightweight and easily accessible for anyone.
|
| What do you think of this? Would you be willing to pay for
| this, or are certain features you'd be willing to pay for?
| Curious you're thoughts.
| pryelluw wrote:
| Missing one important detail: the ability to add a table of
| contents by hand (or be it auto generated) with the additional
| ability to modify such table of contents if it exists.
| RKFADU_UOFCCLEL wrote:
| I tested in Tor Browser at standard security level and it's blank
| except the thumbnails on the left show fine, so just a minor
| glitch somewhere is breaking it. I presume it doesn't support TOC
| then, which is a shame. On the upside, the signature feature is
| well appreciated, something sorely missing from most other PDF
| editors.
| philjohnson wrote:
| Sorry about that. Would you mind sharing the console logs?
| Perhaps it's showing an error that I can use to debug and fix.
| Thanks!
| stefnotch wrote:
| I noticed that this tool doesn't preserve links within PDFs. (
| https://github.com/Hopding/pdf-lib/issues/341 ) That's one of the
| main things I always try out with PDF editors, and it saddens me
| to see that this one also runs into that issue.
|
| Fixes would be either using a different PDF library, or manually
| implementing that feature with the building blocks that pdf-lib
| provides.
___________________________________________________________________
(page generated 2025-05-04 23:01 UTC)