la-souris/document-signer-symfony
Symfony bundle integrating the la-souris document signer, so you can digitally sign PDFs and verify signatures directly from your Symfony services. Configure certificates and signing profiles in bundle config, then sign or validate documents in a few lines of PHP.
DocumentSignerManager driver pattern plus per-provider config means we can support more than one e-signature vendor behind one internal contract. That unlocks real product choices: ValidSign for EU/Netherlands compliance and eIDAS-style flows, DocuSign for global/enterprise customers, or per-customer vendor preference — without forking our codebase per vendor.RecipientRewriter / OverridingSignatureProvider lets QA, demos, and staging run real end-to-end signature flows while redirecting signers to internal addresses. That directly moves the date we can honestly say "signing works" in a non-production environment, which is usually the long pole in these projects.ValidSignSignatureVerifier, DocuSignSignatureVerifier) plus a single DocumentSignerWebhookReceived event gives security reviewers a concrete, auditable boundary. That's a decision-enabler for regulated customers, not just an implementation detail.anchor_y_offset_pixels config (with documented positive/negative semantics, default 0) is a small but telling lever: field placement on anchor-based templates can be corrected per provider via config rather than code. It supports the decision to use anchor-based templates across varied document layouts rather than maintaining per-template coordinates.Consider it when:
Look elsewhere or defer when:
la-souris/document-signer-sdk plus provider packages — we would own the service provider, config publishing, and event/queue bridging ourselves. That is real, if modest, scope and should be priced into the estimate, not assumed away.la-souris/document-signer-validsign and/or la-souris/document-signer-docusign), with version alignment across all of them.Recommended posture: low-risk pilot. Wire it into a single signing flow behind our own interface, keep vendor-specific types out of domain code, and revisit once the package has a few minor releases and the PHP 8.5 constraint is no longer novel.
For executives (one paragraph): E-signature is now a checkbox feature customers expect, and the expensive part is not the API call — it is securely confirming that a document was actually signed by the right person. This package supplies that verified path for two major vendors (ValidSign in the EU, DocuSign globally) behind one internal interface, so we can launch signing features sooner, support EU and US customers with the same codebase, and keep our vendor options open instead of locking in. It is open source and thin, so cost is mostly integration time, not license or platform spend. Three caveats to fund properly: it is a brand-new 1.0 release, it requires a PHP 8.5 runtime upgrade, and if our app is Laravel we will need to write and own a small adapter ourselves.
For engineering leads: A thin adapter over la-souris/document-signer-sdk ^1.0, not a framework of its own. You get a driver manager, per-provider config, verified webhook routes, a single DocumentSignerWebhookReceived event, human-readable event translation, and recipient overriding for non-production. The upside is that the security-critical verification logic is maintained upstream. The costs are an explicit PHP 8.5 floor, a multi-package dependency graph (bundle + SDK + one or both provider packages), and — on Laravel — the service provider, config, and event/queue glue we write and therefore own. Keep the SDK's types behind our own port so a 1.x breaking change is a one-file fix.
Ask: Approve a time-boxed pilot on one signing flow, contingent on the PHP 8.5 upgrade timeline, with a go/no-go review after two minor releases or one production flow, whichever comes first.
How can I help you explore Laravel packages today?