github alam00000/bentopdf v2.8.5
Bug Fixes - v2.8.5

5 hours ago

Dad Joke Of the Release

What's the easiest building to lift? A lighthouse 🤣

(This release is later than I would have liked. The past few weeks I've been under the weather and pretty burnt out, so v2.8.5 sat finished for longer than it should have. Thanks for being patient ❤️)

What's Changed

1. Custom Rotate

  • Improved angle input handling, rotation utilities, and a smoother UX for fine-grained rotation. Thanks to @quhxl for the contribution.

2. Alternate & Mix Pages

  • Alternate and mix pages are now in workflow builder. Fixes #684

3. Helm Chart Auto Update

  • Helm chart version now auto updates with each release. Fixes #680

4. New Option in Merge

  • By default merge tool used to keep Keep original page labels from each file intact. Now users have the option to opt out from it via a checkbox. Fixes #676

Bug Fixes 🐛

  • OCR Arabic + Latin — Fixed mixed Arabic and Latin OCR output where English text appeared as empty boxes when run alongside Arabic. Dual font loading now covers any non Latin script combined with Latin. Also fixes the bug in #724

  • HEIC in workflow — HEIC images are now correctly accepted in the image to pdf workflow node. Fixes #703

  • Email parsing reliability — MsgReader CJS/ESM interop fix for .msg files. Fixes #701

  • Sign PDF signature editor width — Editor now fills the full available width like the rest of the tool. Fixes #653

  • PDF Compare export issue - Now export correctly filters out instead of showing all the changes in exported PDF. Fixes #655

  • RFC 3161 error - Now users can correctly timestamp using RFC 3161. Fixes #649

  • .mjs MIME errors on self-hosted nginx — Vite now emits .js instead of .mjs for built assets, so PDFs no longer fail to load on self-hosted setups whose mime.types doesn't include a .mjs → application/javascript mapping. Fixes the failures reported by users on the Proxmox helper script.

A note on canonicals

A lot of BentoPDF users come to and use bentopdf.com directly since the whole thing runs in the browser. Over the past few months I've received complaints from people who searched for BentoPDF and ended up on someone else's self hosted instance instead of the main site. Sometimes that worked out, but more often it confused users and put unwanted traffic on a self hoster who never asked for it.

To address this, canonical URLs, hreflang, and the sitemap now default to bentopdf.com unless explicitly overridden. This only affects deployments that are exposed to the public internet. Internal and private self-hosted instances (anyone running with ROBOTS_NOINDEX=true) are unaffected, since search engines were never indexing those pages to begin with.

The change fixes three things at once:

  1. Self-hosters keep their bandwidth. Public-facing self-hosted instances no longer absorb search traffic from people who were actually looking for bentopdf.com.
  2. Users land on the right site. Search results for "BentoPDF" reliably point to bentopdf.com instead of a randomly indexed mirror.
  3. Self-hosters who want their own canonical can still claim it. Build with --build-arg SITE_URL=https://your-domain.com and canonicals, sitemap, and hreflang all point at your domain. Documented in STATIC-HOSTING.md.

Self-Hosting Docs

The bentopdf-simple was meant to be used for self hosting, while the bentopdf image is used on our live site. But unfortunately many users still run the bentopdf build

  • Self-Hosted vs Commercial builds — Docs now clearly distinguish the bentopdf-simple (Self-Hosted) and bentopdf (Commercial) builds across the README, getting-started, docker.md, and self-hosting/index.md. Self Hosted is the recommended default; the existing Commercial path is unchanged.
  • New "Common Issues" troubleshooting section — Added .mjs MIME entries and SharedArrayBuffer / COEP-COOP entries to the self-hosting docs, with platform-specific snippets for nginx, Apache, AWS S3, and Kubernetes.

Looking ahead: a bundled self-host build

Something I'm looking into: bringing back a fully bundled self host image like earlier versions had. The current setup pulls the heavy AGPL libraries (PyMuPDF, Ghostscript, CoherentPDF) from jsDelivr at runtime, which works but is sometimes cumbersome for self hosters to manage. Packaging this cleanly under the dual license takes some thought, so no timeline yet. But for the self hosters who've asked about it, it's on my mind and I am working on it so there's no friction going forward.

A note from the developer

Translations across the 19 locales are still automated through Microsoft Translator for the bulk passes. Native-speaker corrections like the ones @Stephan-P keeps catching are the only thing keeping short-string quality high. A Crowdin or Weblate workflow is on the roadmap so corrections reach a reviewer before they ship. Until then, if you read any of the supported languages and spot something off, a PR or even a quick issue is genuinely appreciated.

By the Community

New Contributors

  • @quhxl made their first contribution in #631 ❤️

Full Changelog: v2.8.4...v2.8.5

That's it for now. Thank you for using BentoPDF. Have a great weekend! ❤️

Don't miss a new bentopdf release

NewReleases is sending notifications on new releases.