setasign/fpdi-fpdf
Setasign FPDI-FPDF combines FPDI with FPDF so PHP applications can import pages from existing PDFs and place them into new FPDF-generated documents. Useful for merging, watermarking, stamping, and templating PDFs without external tools.
composer.json, replace it with explicit, auditable version constraints, and pin a PHP-version-supported writer. This feeds dependency-review, SBOM, and procurement/security questionnaires (an archived dependency is a standard finding).Only as a legacy stopgap. Reasonable if you maintain an existing application already written against FPDF 1.x-era APIs, running an older PHP runtime, and you need FPDI + FPDF co-existing without hand-resolving constraints. Even then, prefer declaring setasign/fpdi and setasign/fpdf directly with explicit constraints — you get the same result with a visible, auditable dependency graph.
Consider the underlying FPDI library (not this wrapper) when the core requirement is importing pages from existing PDFs: overlaying data onto supplied templates, merging, stamping, re-ordering pages. That is FPDI's specific strength and it remains a legitimate choice.
Look elsewhere when:
barryvdh/laravel-dompdf for Laravel ergonomics), or headless Chrome via Browsershot/Puppeteer for CSS-accurate layouts.FPDI_Protection add-on is a separate commercial/legacy concern.Licensing caveat worth verifying: the MIT license here covers only the Composer metadata file. Confirm the license terms of FPDI and any FPDI add-ons you actually rely on before shipping in a commercial product.
For executives (one line): This is not a PDF engine — it is a three-line Composer convenience file that locks two older PDF libraries together, and it was abandoned in 2020. We should not adopt it; if it is already in our stack, removing it is a few hours of engineering and reduces our dependency and security-review risk.
For engineering leadership: Treat this as a dependency-hygiene item, not a feature decision. Recommendation: remove setasign/fpdi-fpdf from composer.json and declare setasign/fpdi / setasign/fpdf (or the chosen modern renderer) explicitly so versions are reviewable, patchable, and visible to scanners. Low effort, no product behaviour change expected, but it clears a standing finding in security questionnaires and SBOM reviews.
The actual decision to escalate: which PDF stack we standardise on for the next 12–24 months — legacy FPDF/FPDI for page-import/overlay work, an HTML-to-PDF renderer for design-owned templates, or a managed rendering service for scale. That choice affects design handoff, performance headroom, accessibility/archival requirements, and support cost; it deserves a short technical spike and an ADR rather than an ad-hoc per-ticket choice.
Framing to avoid: don't position this as "we're removing a PDF library." Position it as "we're removing an unmaintained wrapper and making a deliberate, documented choice about our document-rendering platform." The first sounds like churn; the second sounds like ownership.
How can I help you explore Laravel packages today?