Thomas Leitner @gettalong.bsky.social · 22/09/2026Released #HexaPDF 1.11.0 with support for creating LTV digital signatures. hexapdf.gettalong.org/documentatio...hexapdf.gettalong.orgChangelog - HexaPDF 010
Thomas Leitner @gettalong.bsky.social · 12/09/2026This year's Euruko in Brno draws near. See you there next week! I will have some HexaPDF stickers with me 😁 001
Thomas Leitner @gettalong.bsky.social · 08/09/2026No, there is no support for the proprietary and deprecated XFA format. 110
Thomas Leitner @gettalong.bsky.social · 08/09/2026For Ruby you have HexaPDF which is pure Ruby and can fill PDFs. 110
Thomas Leitner @gettalong.bsky.social · 08/09/2026Feel free to contact me if you intend to use HexaPDF for the job and need help. 000
Thomas Leitner @gettalong.bsky.social · 08/09/2026It depends greatly on what the content of the PDF is, i.e. just pure text vs also contains many tables vs contains many high-res images. If you modify hexapdf.gettalong.org/examples/pdf... to run the body 1000 times, it takes 16s with 400MB RAM on my machine, producing a 2.8MB file with 2000 pages.hexapdf.gettalong.orgPDF/A Conformance - HexaPDF 100
Thomas Leitner @gettalong.bsky.social · 19/08/2026PDF now supports Brotli compression through a new extension: pdfa.org/no-excuses-b... And #HexaPDF already has it implemented 😀pdfa.orgNo excuses: Brotli compression advances PDF – PDF Association 000
Reposted by Thomas LeitnerVienna.rb @ruby.wien · 05/08/2026Save the date! Vienna.rb is back with incredible talks and great vibes! See you at Platogo on the 3rd of September! ✌️ 042
Thomas Leitner @gettalong.bsky.social · 07/06/2026#HexaPDF 1.9.0 with support for HarfBuzz text shaping released! hexapdf.gettalong.org/news/2026/he...hexapdf.gettalong.orgHexaPDF 1.9.0 - Text shaping et al. - HexaPDF 000
Thomas Leitner @gettalong.bsky.social · 01/06/2026Coming to #HexaPDF with the next release: HarfBuzz based text shaping! First line in image without, second one with HarfBuzz based text shaping. 000
Thomas Leitner @gettalong.bsky.social · 13/04/2026I just released #HexaPDF 1.7.0, with support for smart text extraction and the upcoming brotli compression filter, among other things. hexapdf.gettalong.org/documentatio... hexapdf.gettalong.org/documentatio...hexapdf.gettalong.orgChangelog - HexaPDF 000
Reposted by Thomas LeitnerVienna.rb @ruby.wien · 09/02/2026Time for another Vienna Ruby Meetup! 🎉 It's been three months since the last meetup. To make up for it, we got three wonderful talks covering a wide range of topics this time. Thank you to Meister for hosting us! 012
Thomas Leitner @gettalong.bsky.social · 23/09/2025Released #HexaPDF 1.4.1 with some fixes - see hexapdf.gettalong.org/documentatio...hexapdf.gettalong.orgChangelog - HexaPDF 000
Thomas Leitner @gettalong.bsky.social · 23/09/2025You can't generally use an embedded font to add new content (because it usually misses parts in the font data structure; even if usable it might be missing characters). Viewers work around this by loading the same font from the system paths. With HexaPDF you need to specify the font yourself. 000
Thomas Leitner @gettalong.bsky.social · 11/06/2025Yes! But did you know that you can even parse arbitrary strings? 😆 Example: github.com/gettalong/he... (used for interleaving and handling file names and options).github.comhexapdf/lib/hexapdf/cli/merge.rb at master · gettalong/hexapdfVersatile PDF creation and manipulation for Ruby. Contribute to gettalong/hexapdf development by creating an account on GitHub. 000
Thomas Leitner @gettalong.bsky.social · 10/06/2025Maybe bind ALT-C to a command that sends CTRL-C? Or do something like this: unix.stackexchange.com/questions/78...unix.stackexchange.comhow to send keyboard strokes programmatically (like "sendkeys" in Windows) to a Wayland Linux window (KDE/GNOME)?I'm writing a desktop automation software, which drives a GUI desktop, on linux. It works pretty well, but Wayland is blocking inter-window communication, especially when entering non-ASCII charact... 000
Thomas Leitner @gettalong.bsky.social · 10/06/2025* KDE lets you configure which short-cut switches between applications (ALT-Tab) and which between their windows (Alt-`). * The built-in KDE krunner application is sufficient as launcher for my needs. * Clipboard history just works in KDE. * Vim GUI -> gvim 000
Thomas Leitner @gettalong.bsky.social · 10/06/2025If you are using KDE, you should be able to just configure this system-wide for all KDE based apps. 010
Thomas Leitner @gettalong.bsky.social · 10/06/2025Or just use BreakVer www.taoensso.com/break-versio... and break things like before 😁taoensso.comBreakVer | Taoensso 000
Thomas Leitner @gettalong.bsky.social · 09/06/2025So, I now have implemented a basic template system for VersaDok. However, using ERB as preprocessor instead of the built-in template system is faster in most cases (even though the larger source doc needs to be parsed every time) because AST nodes need to be rendered many times more. 000
Thomas Leitner @gettalong.bsky.social · 07/06/2025Thanks for the great meetup! And thanks to @hansschnedlitz.com for organizing it and doing the cool Ruby quiz! 000
Thomas Leitner @gettalong.bsky.social · 02/06/2025And now the code is available at github.com/gettalong/ve... It is not yet finished and not really polished etc. but already in a good state. This will be the basis for still more easily creating PDF documents with HexaPDF 😀github.comGitHub - gettalong/versadok: Versatile document creation markup and libraryVersatile document creation markup and library. Contribute to gettalong/versadok development by creating an account on GitHub. 000
Thomas Leitner @gettalong.bsky.social · 24/04/2025Worked now! And just released the new version - see hexapdf.gettalong.org/documentatio...hexapdf.gettalong.orgChangelog - HexaPDF 000
Thomas Leitner @gettalong.bsky.social · 23/04/2025Once rubygems.org sends me the password reset e-mail that I already requested a few times, I can release a new version of #HexaPDFrubygems.orgRubyGems.org | your community gem host 100
Thomas Leitner @gettalong.bsky.social · 17/03/2025Array#[]=(e.g. ary[-10, 10] = EMPTY_ARRAY) won't create an additional array but is slower then Array#pop, so I'm staying with the latter. 010
Thomas Leitner @gettalong.bsky.social · 12/03/2025Full benchmark info here gist.github.com/gettalong/b8...gist.github.comParsing into AST a file with kramdown vs versadokParsing into AST a file with kramdown vs versadok. GitHub Gist: instantly share code, notes, and snippets. 000
Thomas Leitner @gettalong.bsky.social · 12/03/2025So I have been working on something lately, lightweight markup related. Turns out it's at least 4 times faster than kramdown when parsing the same document (n.b. a bit of an apple to banana comparison as kramdown can do much more at the moment but still 🤯) 220
Thomas Leitner @gettalong.bsky.social · 11/03/2025Ah, I forgot up that - thank you! You can further optimize it by using a constant empty array and doing `array[from, size] = EMPTY_ARRAY`. I did a benchmark comparing pop, slice! and your method using benchmark-driver. Interestingly pop was faster even though it creates arrays. 110
Thomas Leitner @gettalong.bsky.social · 11/03/2025So, Ruby friends, how do I remove count number of trailing elements from an array *without* creating a new result array? There is Array#pop(count) but that creates an array I don't need or want ;-) 220
Thomas Leitner @gettalong.bsky.social · 18/02/2025@itext.bsky.social Congrats on the release of 9.1! 🎉 The table rendering speed-up is great! Is the source code for the benchmark available somewhere? 000
Thomas Leitner @gettalong.bsky.social · 09/02/2025Coming with the next release to #HexaPDF: Line annotation appearance generation. Other annotation types will follow. 000
Thomas Leitner @gettalong.bsky.social · 07/01/2025Can also recommend weasyprint if you need HTML/CSS -> PDF. If you want more quality and better conversion, a commercial solution based on PrincePDF is available via www.europdf.eu And a heads up from me: There will be a markup-to-PDF pipeline for HexaPDF in the near future :-)europdf.euEuroPDF - create PDFs from HTML, fast and secure!BASH_logo-transparent-bg-bw 252
Thomas Leitner @gettalong.bsky.social · 02/01/2025It seems that Ruby getting faster with each release is now the norm. As no one is pointing it out anymore 😀 000
Thomas Leitner @gettalong.bsky.social · 01/01/2025New release of hexapdf-extras to make it compatible with HexaPDF 1.0. The API docs now also have a visual example of a Swiss QR bill - hexapdf-extras.gettalong.org/api/HexaPDF/...hexapdf-extras.gettalong.orgHexaPDF Extras: HexaPDF::Extras::Layout::SwissQRBillAdditional functionality for the HexaPDF library 000
Thomas Leitner @gettalong.bsky.social · 14/12/2024I use unary + for normal UTF-8 encoded strings and "literal".b for binary ones. 000
Reposted by Thomas LeitnerEric Wastl @was.tl · 30/11/2024🎄 T-24 hours until #AdventOfCode 2024! 🎄 825246
Thomas Leitner @gettalong.bsky.social · 22/11/2024Yes, I also think so. When I wanted to formulate the versioning scheme for HexaPDF, I came across BreakVer 🙂 010
Thomas Leitner @gettalong.bsky.social · 22/11/2024Understood 😆 I also kept HexaPDF on 0.x versions for a long time (8 years) but decided to change it to 1.0 this October, now following BreakVer instead of SemVer. 110
Thomas Leitner @gettalong.bsky.social · 21/11/2024What do you do in case of breaking changes? Just a highlighted entry in the changelog? I have found that BreakVer (www.taoensso.com/break-versio...) is the versioning scheme I'm most comfortable with.taoensso.comBreakVer | Taoensso 100
Thomas Leitner @gettalong.bsky.social · 18/11/2024New version of kramdown released! kramdown.gettalong.org/news.htmlkramdown.gettalong.orgNews | kramdownkramdown is a fast, pure-Ruby Markdown-superset converter 010