Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Dompdf Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Abandonment signal is the strongest data point. Zero stars, zero dependents, a fork-of-a-fork provenance chain, and an archived upstream parent (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.
  • Version pinning risk. Legacy Symfony 2 bundles typically constrain PHP to the 5.x–7.1 era and pin 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.
  • Framework EOL. Symfony 2 is unsupported; running it is itself a separate, larger compliance finding. Adopting a bundle that requires it locks in that exposure.
  • Correctness risk is inherited, not created. DomPDF itself is maintained, but it has known CSS limitations (limited flexbox/grid, partial web-font handling, no JS). PDF fidelity bugs will surface in production regardless of the wrapper.

Key questions.

  1. What PHP, framework, and framework-version is the target application actually on today? If it is Laravel, this package is disqualified and the conversation should be about barryvdh/laravel-dompdf or direct dompdf/dompdf integration.
  2. Is DomPDF a hard requirement, or is it an inherited default? If HTML/CSS fidelity matters (invoices, statements, branded reports), DomPDF is often the wrong engine and the answer is headless Chrome (Browsershot, Puppeteer, or a managed PDF API).
  3. What is the PDF volume and latency budget? This determines whether a pure-PHP renderer is viable at all.
  4. Who owns the fork if it breaks? With zero dependents there is no upstream community to lean on; the answer must be "we fork and maintain it," which is a standing cost.
  5. Is there a compliance or security-review gate on third-party dependencies? A zero-star, zero-dependent, unmaintained fork will not survive most such gates.

Integration Approach

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:

  1. Laravel, greenfield or upgradeable: 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.
  2. Laravel, already committed to raw DomPDF: add dompdf/dompdf directly, write a ~50-line service class (HtmlToPdf::render(string $html, array $opts): string), register it as a singleton. No bundle needed.
  3. Legacy Symfony 2, cannot move: vendor the bundle (or fork it into a private VCS repo), pin it explicitly, and put a ticket in the backlog to remove it as part of the framework upgrade. Treat it as a temporary bridge, not a dependency.
  4. Legacy Symfony 2, can move: upgrade Symfony first; the bundle becomes irrelevant. Do not sequence the framework upgrade behind this dependency — it is the dependency that should yield.

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.

  1. Confirm the actual stack and framework version (blocks everything else).
  2. Decide the PDF fidelity requirement (DomPDF vs. headless Chrome) — this is a product decision, not an engineering one, and it changes the recommendation.
  3. If DomPDF is confirmed, integrate the library through a narrow PdfRenderer interface. Write the interface first so the engine is swappable.
  4. Only if the stack is genuinely Symfony 2 and immovable, vendor this bundle as a stopgap with an explicit removal ticket and an owner.
  5. Do not add the bundle to any new project. There is no scenario where a fresh build should depend on a zero-star, zero-dependent fork of an archived bundle.

Operational Impact

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.

  • Silent fidelity regressions: CSS the engine does not support renders "successfully" but wrong — misaligned tables, missing web fonts, broken page breaks. This is the most expensive failure mode because it is invisible to tests that only assert a PDF was produced.
  • Memory exhaustion: OOM kills on large inputs, producing 500s under load rather than clean errors.
  • Dependency lock-in: a PHP or framework upgrade blocked by a constraint nobody can bump, discovered mid-upgrade.
  • Unpatched vulnerability: a CVE in the pinned DomPDF version with no path to a fix short of forking.
  • Font/asset resolution: remote font fetching failures in locked-down environments causing slow renders and timeouts.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin