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

Pdf Parser Bundle Laravel Package

kreatys/pdf-parser-bundle

A PHP bundle for extracting text and metadata from PDF documents. Wraps a PDF parser behind a simple service interface so you can pull content, page counts, and document info from uploaded or stored PDFs in your PHP application.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Feature enablement — "PDF upload" as a product surface. It makes the case for text-in-PDF features real: searchable document libraries, invoice/contract metadata extraction, resume parsing, support-ticket attachment triage, and text pre-processing for LLM/RAG ingestion. This is the fastest path to a working spike on a Symfony/Laravel app without buying an extraction vendor.
  • Build vs. buy. It anchors the cheapest rung of the extraction ladder: self-hosted, zero per-page cost, no document egress. That forces an explicit, honest comparison against Textract / Document AI / Azure Document Intelligence / Adobe PDF Extract, whose value is layout fidelity, OCR, and table structure — not "reading text."
  • Roadmap sequencing — splitting "PDF support" into two initiatives. Digital-native extraction (this package's lane) and scanned-document OCR are different workstreams with different vendors, costs, and timelines. Naming the boundary now prevents a mid-sprint discovery that half the customer corpus is scans returning empty strings.
  • Architecture decision — standardize on a capability, not a wrapper. Because the package is a Symfony bundle contributing only DI wiring and config, the real decision is which parsing library we standardize on and what our own extractor contract looks like. That's a decision a PM can own: the interface is the asset, the vendor is swappable.
  • Risk register input. Zero stars, zero dependents, score 0, and a pinned fork of smalot/pdfparser are adoption signals, not blockers. They justify a "spike only, behind an interface, with a named owner and review date" posture rather than a platform commitment.
  • Scope negotiation with stakeholders. Concrete, testable capability tiers — text layer, metadata, per-page text, forms, encryption, OCR — let you say "v1 does text and metadata on digital PDFs; scans are v2" in a planning meeting instead of after launch.

When to Consider This Package

Adopt it when:

  • You are on Symfony (the bundle's native home) and want a config-wired extractor for a pilot, internal tool, or back-office workflow within a day.
  • Documents are digital-native with a real text layer, and "good enough" text is acceptable — no layout fidelity, no table reconstruction.
  • Volume is modest, extraction happens off the request path, and the product constraint is no external services, no per-document cost, no data egress.
  • You are explicitly building a throwaway spike and are prepared to swap the implementation behind your own interface later.

Look elsewhere — or plan around it — when:

  • You are on Laravel. The bundle's entire value (auto-registered DI extension and config tree) never executes in Laravel. Skip the wrapper; depend on the maintained upstream library directly and bind it in a service provider. Same capability, one less unmaintained dependency.
  • Scanned or image-only PDFs are in scope. OCR is required; this cannot help. Budget it as a separate initiative.
  • Layout matters — tables, forms, multi-column, structured fields. Go layout-aware (Textract, Azure, Adobe) or run pdfplumber/Camelot in a worker.
  • Throughput or file size matters. Pure-PHP parsing is CPU- and memory-heavy; pdftotext via Poppler, Apache Tika, or a hosted service wins on both cost-per-page at scale and operational sanity.
  • Maintenance and security review are gating. An actively maintained upstream plus your own three-line binding is strictly better than inheriting an abandoned wrapper and its pin.

How to Pitch It (Stakeholders)

To executives: This is a free, self-hosted way to pull text out of PDFs inside our existing PHP stack — no vendor contract, no per-page fees, no documents leaving our infrastructure. It is right for a pilot on digital documents: searchable uploads, metadata capture, feeding content into an AI pipeline. It is explicitly not a solution for scanned paperwork, forms, or tables; those need a paid extraction service, and we should approve that as a separate budget line up front rather than discover the gap after users are onboarded. Recommendation: fund a short spike, not a platform bet — the library we'd wrap is a low-adoption, unmaintained-looking fork, so we should keep the vendor choice behind our own interface so we can swap without product rework.

To engineering: Treat this package as a reference implementation, not a dependency. It's a thin Symfony wrapper around a fork of smalot/pdfparser with no adoption signal; in Laravel its DI wiring is inert, and in Symfony the maintained upstream plus a two-line service definition gives the same result with less risk. Three asks: (1) define a first-party extraction contract so callers never touch a vendor API; (2) handle failure modes as product states, not exceptions — encrypted files, malformed PDFs, oversized files hitting memory limits, and above all image-only PDFs that return empty text as apparent success, which must route to OCR or manual review; (3) validate against a sample of our real corpus — clean, scanned, encrypted, 50MB+, non-Latin — before we commit, and put that corpus in CI. Extraction runs in queued workers with timeouts and memory caps, never in a request cycle.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager