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

Laravel Gotenberg Laravel Package

safermobility/laravel-gotenberg

A Laravel wrapper for Gotenberg that simplifies generating PDFs from HTML, URLs, Markdown, and Office documents. It offers a fluent, configurable API for sending content to your Gotenberg service and returning polished PDF output.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. safermobility/laravel-gotenberg is a thin Laravel integration for a Gotenberg HTTP service. It fits a conventional Laravel architecture: a service provider registers a client, configuration is publishable, and application code delegates PDF generation to Gotenberg rather than rendering in-process. That is a reasonable fit where PDF fidelity, Chromium-based rendering, or conversion of Office/HTML assets matters and where the team already operates containerized services. It is a poor fit for serverless or single-container deployments that cannot host or reach a Gotenberg instance, or for teams unwilling to add a network hop to the PDF path.

Integration feasibility. Integration is likely straightforward for a Laravel team: install via Composer, publish config, point the client at a Gotenberg base URL, and store the returned bytes to a configured disk. The v1.0.3 fix — "Fix saving the PDF to the local filesystem" — is directly relevant to a common integration pattern. Teams that write generated PDFs to storage/app or a local disk should treat v1.0.3 as the minimum acceptable patch level, because earlier 1.0.x releases may have mis-persisted output. The dependency bumps (actions/checkout, git-auto-commit-action, fetch-metadata) are CI/tooling-only and do not change runtime behavior.

Technical risk. The primary risk is not the release itself; it is the operational dependency on an external Gotenberg service and the package's small maintainer footprint. This assessment is based on release notes only — no source review, no version-matrix validation, and no maintainer activity review — so the following remain unverified: supported Laravel/PHP versions, supported Gotenberg API versions, retry/timeout behavior, and whether the local-filesystem fix is covered by tests. The bugfix in a patch release implies a real production failure mode existed (PDF not saved or saved incorrectly to local disk), which raises the importance of regression testing around file writes, directory permissions, and disk configuration. Dependabot activity is a positive signal for maintenance hygiene but does not substitute for runtime test coverage.

Key questions.

  • Which Laravel and PHP versions are supported, and does that match our target applications?
  • Which Gotenberg versions are compatible, and how tightly is the client coupled to the Gotenberg API?
  • What exactly did the local-filesystem fix change — path handling, stream handling, disk configuration, or error propagation?
  • Are there automated tests covering local disk writes, remote disks, and failure responses?
  • What is the maintainer bus factor, and is there a fallback plan if the package is abandoned?
  • Does the client expose timeouts, retries, and meaningful exceptions for operational monitoring?

Integration Approach

Stack fit. Best suited to a standard Laravel application running in Docker or Kubernetes alongside a Gotenberg container, with PDFs written to local or shared storage. Less suitable for Lambda-style runtimes, applications with strict data-residency constraints that prohibit sending documents to another service, or teams that need synchronous in-process rendering with no external dependency.

Migration path. For teams replacing ad-hoc cURL calls or a homegrown Gotenberg wrapper, the migration is mostly mechanical: introduce the package, centralize the Gotenberg base URL and timeout settings in configuration, and route existing PDF generation through the package client. For teams replacing a different PDF library (DomPDF, Snappy/wkhtmltopdf), the migration is larger because rendering behavior and CSS/JS support will differ; plan for visual regression testing on representative documents before cutover. Pin ^1.0.3 or later to ensure the local-filesystem fix is present.

Compatibility. Validate three axes before adoption: Laravel/PHP version support, Gotenberg image/API version, and storage disk behavior. The local-filesystem fix makes disk semantics especially important — confirm whether the package writes via Laravel's filesystem abstraction or directly to a path, and whether that behaves correctly with local, S3, and other disks. If the application runs multiple PHP containers, local disk writes are node-local unless backed by shared storage; that is an application architecture concern the package cannot solve.

Sequencing.

  1. Stand up a pinned Gotenberg container in development and confirm connectivity from the Laravel app.
  2. Install ^1.0.3, publish config, and implement one representative PDF generation path.
  3. Test local disk writes explicitly: permissions, target directory existence, filenames, overwrite behavior, and cleanup.
  4. Add failure-path tests for Gotenberg unavailability, non-2xx responses, and timeouts.
  5. Run visual regression checks against current PDF output if replacing an existing renderer.
  6. Promote to staging with production-like storage and network policy, then canary in production with monitoring on latency and error rates.

Operational Impact

Maintenance. Low code footprint and active Dependabot updates suggest modest maintenance burden. The main ongoing tasks are tracking Gotenberg image upgrades, keeping the package pinned and patched, and monitoring the package's release cadence. Because the project is small, teams should expect to read the source when edge cases arise rather than rely on extensive documentation or community answers.

Support. Support risk is concentrated in a small maintainer group. There is no evidence in the release notes of a formal support policy, security disclosure process, or long-term support commitment. For business-critical PDF generation, treat the package as a convenience wrapper and retain the ability to call Gotenberg directly if the wrapper becomes unmaintained. Internal ownership should sit with the team that owns the document-generation workflow, not a platform team by default.

Scaling. Scaling is dominated by Gotenberg, not the Laravel package. PDF generation is CPU- and memory-intensive; plan to scale Gotenberg horizontally behind a service endpoint and to set concurrency limits. The Laravel side scales normally, but synchronous PDF calls can exhaust PHP workers under load — consider queueing PDF jobs for non-interactive generation. Large documents and Chromium-based rendering can produce memory spikes; set container limits and test with worst-case inputs.

Failure modes. Key failure modes: Gotenberg unreachable or slow (timeouts, worker exhaustion); non-2xx responses from Gotenberg surfacing as generic exceptions; local disk full, permission denied, or directory missing (the exact area v1.0.3 addresses); filename collisions or unsafe user-supplied filenames; and version skew between the client and Gotenberg after an image upgrade. Multi-node deployments add a split-brain storage failure mode if PDFs are written locally but later read from another node. Instrument PDF generation with timing, success/failure counts, and Gotenberg response codes.

Ramp-up. A Laravel developer can integrate the package in under a day if a Gotenberg instance is available. The steeper learning curve is operational: understanding Gotenberg's API, container resource sizing, Chromium behavior, and storage semantics. Allocate time for a developer to own the Gotenberg deployment and for QA to build a document corpus for regression testing. Given the release history, include the v1.0.3 local-filesystem fix in onboarding notes so new adopters do not pin to an affected 1.0.x version.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource