11 comments

  • RodgerTheGreat 4 hours 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...

  • layer8 3 hours 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.
  • andai 5 hours 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 :)

  • winterec 18 minutes ago
    Great work thanks for sharing. I've been looking for something like this for generating invoice PDFs without bloat.
  • anilgulecha 15 hours 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.

  • culi 3 hours 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

  • raybb 1 hour 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

  • wg0 5 hours ago
    So essentially - it only works with Latin script? Because without fonts, every other script is NOT going to render.
  • IntelliAvatar 1 day ago
    3KB is wild. What features did you intentionally leave out to get this small?
    • wonger_ 6 hours ago
      Not the author, but generating PDFs is much, much simpler than parsing PDFs
    • lysace 6 hours ago
      Support for more than 7-bit ASCII characters. :)
    • teaearlgraycold 5 hours ago
      It only supports Helvetica!
  • croisillon 6 hours ago
    is it related to one of the other 10 products called TinyPDF?
    • esafak 6 hours ago
      Yes, obviously: it's a tiny PDF library.