Product Decisions This Supports
- Capability vs. package: separate the two. The underlying capability — importing an existing PDF as a template and overlaying dynamic data (invoices, packing slips, government/insurance forms, tax documents, certificate templates) — is a legitimate product requirement. This package is not the way to deliver it. Treat any decision here as a dependency selection decision, not a feature decision.
- Build vs. buy, resolved toward "buy the libraries, not the wrapper." The
setasign/fpdi-tcpdf package is a Composer metapackage: it contains no meaningful code of its own, it only pins compatible versions of FPDI and TCPDF. There is no product value in the wrapper; the value is entirely in the two libraries it points at.
- Roadmap implication: a migration ticket, not a feature ticket. If this is already in the codebase, the decision it drives is "schedule removal" — replace the metapackage with explicit
setasign/fpdi and tecnickcom/tcpdf requirements at maintained versions. Budget it as dependency hygiene, not as a project.
- Procurement and security review input. Marked ABANDONED and archived, last release February 2020. That is a hard blocker in most vendor security questionnaires, SOC 2 evidence packs, and internal dependency-health gates. It should be flagged in any due-diligence or compliance review that touches the PDF pipeline, even if the transitive code is fine.
- Signals for the build-vs-buy conversation on PDF generation generally. If the team is already generating PDFs, evaluate whether TCPDF is still the right engine at all (see below) rather than silently inheriting it via a stale metapackage. This package's abandonment is a good forcing function to re-examine the whole PDF stack.
- Portfolio-level dependency inventory. 62 stars and an archived repo means effectively zero community support and no upstream fixes. Any product area depending on it carries unowned risk that should appear on a risk register, not on a roadmap.
When to Consider This Package
Effectively never for new work. Criteria under which it would be defensible are narrow and shrinking:
- You are reproducing a legacy environment byte-for-byte and need the exact historical version pin for a migration or reproduction task — a one-off forensic exercise, not a permanent dependency.
- You are auditing an existing application and need to understand why the pin exists before removing it (i.e., confirming which FPDI/TCPDF versions were locked and whether anything relies on that specific pairing).
Look elsewhere — and specifically at direct dependencies — when:
- You need PDF template import and overlay in a new or actively maintained product. Require
setasign\Fpdi and a PDF engine directly; FPDI's TCPDF integration is available without this metapackage, so the wrapper adds nothing but a stale constraint.
- You need modern PHP support. A 2020 pin will not track PHP 8.x/8.3+ compatibility, and abandoned constraints are a common cause of "we can't upgrade the runtime" blockers.
- You need active security patching, CVE response, or a supported upgrade path. Archived repositories provide none.
- You are evaluating the PDF engine itself. TCPDF is mature but slow and no longer the default recommendation for new builds; HTML-to-PDF approaches or other maintained engines usually win on developer velocity and layout fidelity. Do that evaluation as its own decision rather than inheriting TCPDF by accident.
- Your dependency policy forbids abandoned packages. This one fails that policy outright.
How to Pitch It (Stakeholders)
For executives: The package we found is not a PDF library — it is a thin pointer that says "use these exact versions of two other libraries," and it was abandoned and archived in 2020. It gives us no capability we don't already get from its two real dependencies, and it actively works against us: it blocks PHP upgrades, fails security and vendor due-diligence checks, and has no one maintaining it. The recommendation is not to adopt it and, if it is already in our stack, to remove it in a small, low-risk dependency cleanup.
For engineering: This is setasign/fpdi-tcpdf, a Composer metapackage that pins FPDI and TCPDF. No code of substance, MIT licensed, last tagged release 2020-02-19, repository archived. Delete the requirement and declare setasign/fpdi and tecnickcom/tcpdf (or a replacement engine) explicitly at versions we choose and can patch. Verify FPDI's TCPDF integration still resolves the class path we use, run the PDF generation test suite, and confirm output parity on a representative sample of templates before and after. While we're in there, raise a separate spike on whether TCPDF is still the right engine — that is a different decision and should not be bundled into the cleanup.
One-line summary: Abandoned wrapper around two living libraries — zero capability, non-trivial risk, trivially removable. Decline adoption; schedule removal if present.