nmalo/dompdf-bundle
A Laravel bundle integrating Dompdf for generating PDFs from HTML and Blade views, with bundle configuration and service wiring for downloading or streaming PDF documents. Review its compatibility and maintenance status before adopting it in production.
Architecture fit. This is not a Laravel package — it is a Symfony 2 bundle (nmalo/dompdf-bundle), a fork of the long-abandoned SlikNL/DompdfBundle. It ships a Bundle class, a DI extension, and a service definition wired through Symfony's container and config tree. None of that maps onto Laravel's service-provider/container model. Even within Symfony, the bundle targets Symfony 2.x, which reached end-of-life in November 2018. The only realistic "fit" is a legacy Symfony 2 application that already depends on DomPDF and cannot move off it — a shrinking population.
Integration feasibility. Low for a Laravel stack. There is no ServiceProvider, no facade, no publishable config, and no Laravel-version constraint. Adapting it would mean either (a) pulling the bundle's source into app/ and hand-wiring the DomPDF client, which defeats the point of using a package at all, or (b) bypassing the bundle entirely and depending on dompdf/dompdf directly plus a thin wrapper service. Option (b) is strictly better and is what any competent team would do. On Laravel, barryvdh/laravel-dompdf is the established equivalent and remains actively maintained.
Technical risk. High and concentrated in supply-chain and staleness dimensions:
SlikNL/DompdfBundle). There is no community review, no CI, no release cadence, and no evidence of a security response process. A single-maintainer abandonware fork is exactly the profile of a package that quietly accumulates unpatched CVEs.dompdf/dompdf to an old major. That blocks PHP 8.x upgrades, blocks modern DomPDF security fixes, and creates dependency-resolution conflicts the moment anything else in the tree moves forward.Key questions.
barryvdh/laravel-dompdf or direct dompdf/dompdf integration.Stack fit. Poor for Laravel, poor for modern Symfony (5/6/7), tolerable only for Symfony 2.x. The underlying dependency — dompdf/dompdf — fits any PHP stack fine; it is the bundle wrapper that does not travel. The correct framing for the team is: do not integrate the bundle; integrate the library.
Migration path. Recommended target state, in order of preference:
composer require barryvdh/laravel-dompdf, bind a PdfRenderer interface in the container, and keep DomPDF behind that seam so it can be swapped for Chrome later. This is a same-day change and removes the entire risk profile above.dompdf/dompdf directly, write a ~50-line service class (HtmlToPdf::render(string $html, array $opts): string), register it as a singleton. No bundle needed.Compatibility. Expect friction on PHP version (likely <7.2 era constraints), symfony/symfony constraints (~2.x), and an old dompdf/dompdf pin (likely 0.6–0.8 series). Verify with composer why-not dompdf/dompdf and composer why-not php before committing. If Composer reports a conflict against any other dependency in the tree, the bundle is out — do not --ignore-platform-reqs your way past it.
Sequencing.
PdfRenderer interface. Write the interface first so the engine is swappable.Maintenance. Effectively zero upstream maintenance. No stars, no dependents, no visible release process, and an abandoned parent repository means the fork inherits no maintenance energy. Every future PHP or dependency bump becomes an internal task — the team is not a consumer of this package, it is the de facto maintainer. Budget for that or avoid it.
Support. No vendor, no documented escalation path, no meaningful issue history. Debugging will be source-diving into a fork whose provenance is two hops removed from anything the original authors still care about. Internal knowledge will be concentrated in whichever engineer first touches it, which is a bus-factor problem.
Scaling. DomPDF is a pure-PHP renderer: memory- and CPU-bound, single-threaded per request, and prone to memory exhaustion on large documents or embedded image-heavy HTML. It scales by throwing worker processes and memory limits at it, not by design. At meaningful volume (thousands of documents/day, or large multi-page statements), a headless-Chrome worker pool or a managed PDF service is the right architecture. This is a property of DomPDF, not of the wrapper — but the wrapper does nothing to help (no queue integration, no pooling, no caching).
Failure modes.
Ramp-up. Low for the API surface — DomPDF usage is a handful of calls and the bundle adds little cognitive load — but high for the surrounding risk: an engineer must learn why the dependency is pinned, what is safe to upgrade, and where the fidelity landmines are in existing templates. That knowledge is undocumented and lives only with whoever inherited it. A new engineer picking this up on a greenfield project would be taking on unjustifiable onboarding cost for no capability they could not get from dompdf/dompdf directly, or from a maintained alternative.
Bottom line for the product decision. Do not adopt. There is no requirement this bundle satisfies that a direct dompdf/dompdf dependency (on Symfony) or barryvdh/laravel-dompdf (on Laravel) does not satisfy better, with active maintenance, current framework support, and a community to lean on. If PDF generation is on the roadmap, the real decision is engineering selection — DomPDF for simple documents, headless Chrome for high-fidelity output — and the bundle is a distraction from it.
How can I help you explore Laravel packages today?