frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: TinyPDF – 3kb pdf library (70x smaller than jsPDF)

https://github.com/Lulzx/tinypdf
253•lulzx•1mo ago
I needed to generate invoices in a Node.js app. jsPDF is 229KB. I only needed text, rectangles, lines, and JPEG images.

  So I wrote tinypdf: <400 lines of TypeScript, zero dependencies, 3.3KB minified+gzipped.

  What it does:
  - Text (Helvetica, colors, alignment)
  - Rectangles and lines
  - JPEG images
  - Multiple pages, custom sizes

  What it doesn't do:
  - Custom fonts, PNG/SVG, forms, encryption, HTML-to-PDF

  That's it. The 95% use case for invoices, receipts, reports, tickets, and labels.

  GitHub: https://github.com/Lulzx/tinypdf
  npm: npm install tinypdf

Comments

IntelliAvatar•1mo ago
3KB is wild. What features did you intentionally leave out to get this small?
wonger_•1mo ago
Not the author, but generating PDFs is much, much simpler than parsing PDFs
IntelliAvatar•1mo ago
That makes sense. I was mostly curious about what explicit trade-offs the author chose beyond “generation only” — e.g. fonts, Unicode, images, compression, etc.

Would be interesting to see a concrete “not supported” list from the author.

lysace•1mo ago
Support for more than 7-bit ASCII characters. :)
teaearlgraycold•1mo ago
It only supports Helvetica!
hu3•1mo ago
utf-8
anilgulecha•1mo ago
Great exercize, but for most use cases - people will continue reaching for jsPDF.

I think if you have a markdown->PDF function included, where I can send in markdown and get PDF, that would solve quite many needs, and would be useful.

lulzx•1mo ago
I have added it!
nebezb•1mo ago
Wow you’re not kidding. That was fast.

https://github.com/Lulzx/tinypdf/commit/961e6b602f19e125f210...

pylotlight•1mo ago
HTML -> PDF was also a use case I've used previously FYI
croisillon•1mo ago
is it related to one of the other 10 products called TinyPDF?
esafak•1mo ago
Yes, obviously: it's a tiny PDF library.
andai•1mo ago
Back in the day I needed PDF export for some client thing. I can't remember if I was using pdfjs or jspdf. I do however remember that it was many thousands of lines of code, and yet, I had to lay out the lines of text on the page manually.

My page layout code was like 50 lines of code. And I remember thinking... OK they already wrote 8,000 lines of code... They couldn't have added 50 more?!

400 lines though. Respect. I will take a proper look at this when I recover from burnout :)

wg0•1mo ago
So essentially - it only works with Latin script? Because without fonts, every other script is NOT going to render.
jbaiter•1mo ago
Agree, the lack of support for TTF fonts is a bummer for most non-english use cases:-/
RodgerTheGreat•1mo ago
It's definitely far easier to emit a controlled, useful subset of PDF than it is to parse PDF documents. I wrote a small PDF library for the Decker ecosystem that just focuses on bitmaps and page layout; roughly 4kb and 135 LoC.

docs/demos: https://beyondloom.com/decker/pdf.html

browsable source: https://github.com/JohnEarnest/Decker/blob/main/examples/dec...

kuschkufan•1mo ago
This decker stuff is pretty nifty too
user3939382•1mo ago
I’m working on one rn. It takes arbitrary PDFs and builds composable dynamic pandoc pipelines to match the source byte for byte output. It’s very very complex. But if I can get it finished it will fuck over Adobe so worth it.
culi•1mo ago
While not quite as small as 3kb, I recently found this incredible library called html-to-image that's only 300kb. It clones whatever subtree of your document you want to a <foreignObject> inside an svg which then allows it to output canvas, png, svg, pdf, blob, jpeg, etc. Even more impressively is that it handles custom fonts, pseudo-elements, computed styles and more.

https://github.com/bubkoo/html-to-image

It's probably the most impressive and seamless experience I've had with converting HTML to pdfs/images so I just wanted to sing its praises here

normie3000•1mo ago
It does sound very cool, but I don't think it exports to PDF: https://github.com/bubkoo/html-to-image/issues/327
culi•1mo ago
Oh my, you're right. I've actually only tried it for exporting to images. Sorry for the misleading comment!
layer8•1mo ago
Only supports ASCII characters, which is part of the trick here. As soon as you need more Unicode (even just typographic quote characters and such), you’ll need significantly more logic. Also no bold, italics, etc.
raybb•1mo ago
Was Typst falling short in any particular area that made you not want to use it? (If it was on your radar at all). I think it would work for your use case and could also run client side if needed.

Here's the TS library: https://github.com/Myriad-Dreamin/typst.ts

winterec•1mo ago
Great work thanks for sharing. I've been looking for something like this for generating invoice PDFs without bloat.
copypaper•1mo ago
Nice work! I'm curious though, what was your use case for needing a smaller library? Since you're running this on a server, what difference does an extra 226KB make?
lulzx•1mo ago
on cloudflare workers, the bundle limit makes 226KB massive.
kentonv•1mo ago
FWIW, the limit these days is 10MB (after compression).

https://developers.cloudflare.com/workers/platform/limits/

That said, thank you for fighting library bloat! Small libraries tend to perform better (not just on Workers but in general).

userbinator•1mo ago
I still have a tiny DOS binary (x86 Asm) that I wrote decades ago for turning plaintext ASCII files into PDFs, for those annoying use-cases where the former isn't accepted but the latter is. It's only a few hundred bytes, with the majority being data to be copied verbatim into the output file.
dzrmb•1mo ago
I actually was battling jsPDF the other day so definitely need to give this a try, thanks!
nanis•1mo ago
HTML + CSS works great for this kind of thing. Once you get the print scope correct, you really never need to think about it again.
ErroneousBosh•1mo ago
Heh, no stars when I first looked and though "hey I'll star this" and now 300 ;-)
alexpadula•1mo ago
Well ain’t that a useful 400 lines of code eh! Good work
niutech•1mo ago
Why not generate good old RTF files instead of PDF? They are much simpler and support more than ASCII charset.

Matchlock: Linux-based sandboxing for AI agents

https://github.com/jingkaihe/matchlock
1•jingkai_he•2m ago•0 comments

Show HN: A2A Protocol – Infrastructure for an Agent-to-Agent Economy

1•swimmingkiim•6m ago•0 comments

Drinking More Water Can Boost Your Energy

https://www.verywellhealth.com/can-drinking-water-boost-energy-11891522
1•wjb3•9m ago•0 comments

Proving Laderman's 3x3 Matrix Multiplication Is Locally Optimal via SMT Solvers

https://zenodo.org/records/18514533
1•DarenWatson•11m ago•0 comments

Fire may have altered human DNA

https://www.popsci.com/science/fire-alter-human-dna/
3•wjb3•12m ago•1 comments

"Compiled" Specs

https://deepclause.substack.com/p/compiled-specs
1•schmuhblaster•17m ago•0 comments

The Next Big Language (2007) by Steve Yegge

https://steve-yegge.blogspot.com/2007/02/next-big-language.html?2026
1•cryptoz•18m ago•0 comments

Open-Weight Models Are Getting Serious: GLM 4.7 vs. MiniMax M2.1

https://blog.kilo.ai/p/open-weight-models-are-getting-serious
4•ms7892•28m ago•0 comments

Using AI for Code Reviews: What Works, What Doesn't, and Why

https://entelligence.ai/blogs/entelligence-ai-in-cli
3•Arindam1729•28m ago•0 comments

Show HN: Solnix – an early-stage experimental programming language

https://www.solnix-lang.org/
2•maheshbhatiya•28m ago•0 comments

DoNotNotify is now Open Source

https://donotnotify.com/opensource.html
5•awaaz•30m ago•2 comments

The British Empire's Brothels

https://www.historytoday.com/archive/feature/british-empires-brothels
2•pepys•30m ago•0 comments

What rare disease AI teaches us about longitudinal health

https://myaether.live/blog/what-rare-disease-ai-teaches-us-about-longitudinal-health
2•takmak007•35m ago•0 comments

The Brand Savior Complex and the New Age of Self Censorship

https://thesocialjuice.substack.com/p/the-brand-savior-complex-and-the
2•jaskaransainiz•37m ago•0 comments

Show HN: A Prompting Framework for Non-Vibe-Coders

https://github.com/No3371/projex
2•3371•38m ago•0 comments

Kilroy is a local-first "software factory" CLI

https://github.com/danshapiro/kilroy
2•ukuina•48m ago•0 comments

Mathscapes – Jan 2026 [pdf]

https://momath.org/wp-content/uploads/2026/02/1.-Mathscapes-January-2026-with-Solution.pdf
1•vismit2000•50m ago•0 comments

80386 Barrel Shifter

https://nand2mario.github.io/posts/2026/80386_barrel_shifter/
2•jamesbowman•51m ago•0 comments

Training Foundation Models Directly on Human Brain Data

https://arxiv.org/abs/2601.12053
1•helloplanets•51m ago•0 comments

Web Speech API on HN Threads

https://toulas.ch/projects/hn-readaloud/
1•etoulas•53m ago•0 comments

ArtisanForge: Learn Laravel through a gamified RPG adventure – 100% free

https://artisanforge.online/
2•grazulex•54m ago•1 comments

Your phone edits all your photos with AI – is it changing your view of reality?

https://www.bbc.com/future/article/20260203-the-ai-that-quietly-edits-all-of-your-photos
1•breve•55m ago•0 comments

DStack, a small Bash tool for managing Docker Compose projects

https://github.com/KyanJeuring/dstack
2•kppjeuring•56m ago•1 comments

Hop – Fast SSH connection manager with TUI dashboard

https://github.com/danmartuszewski/hop
1•danmartuszewski•56m ago•1 comments

Turning books to courses using AI

https://www.book2course.org/
8•syukursyakir•58m ago•6 comments

Top #1 AI Video Agent: Free All in One AI Video and Image Agent by Vidzoo AI

https://vidzoo.ai
2•Evan233•58m ago•1 comments

Ask HN: How would you design an LLM-unfriendly language?

1•sph•1h ago•0 comments

Show HN: MuxPod – A mobile tmux client for monitoring AI agents on the go

https://github.com/moezakura/mux-pod
1•moezakura•1h ago•0 comments

March for Billionaires

https://marchforbillionaires.org/
1•gscott•1h ago•0 comments

Turn Claude Code/OpenClaw into Your Local Lovart – AI Design MCP Server

https://github.com/jau123/MeiGen-Art
1•jaujaujau•1h ago•0 comments