Weave Code
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
Php Weasyprint

Php Weasyprint Laravel Package

pontedilana/php-weasyprint

Laravel-friendly PHP wrapper for WeasyPrint to render HTML/CSS into high-quality PDFs (and images) via a simple API. Ideal for invoices, reports, and templated documents, with options for assets, headers/footers, and configuration.

View on GitHub
Deep Wiki
Context7

PHP library allowing PDF generation from an url or a html page. Wrapper for Kozea/WeasyPrint.

Frequently asked questions about Php Weasyprint
Can I use pontedilana/php-weasyprint to generate PDFs from Laravel Blade templates?
Yes, the package works seamlessly with Blade templates. Render your Blade view to HTML first, then pass it to the WeasyPrint wrapper for PDF conversion. Example: `$html = view('invoice', $data)->render(); $pdf->fromHtml($html)->save('invoice.pdf');`
What Laravel versions does this package support?
The package is framework-agnostic but integrates with Laravel 8.x and later. Ensure your PHP version (8.0+) matches the package’s requirements. Test compatibility if using older Laravel versions like 7.x.
How do I handle PDF generation for dynamic user-specific content in Laravel?
Use Laravel’s queue system to offload PDF generation. Create a job (e.g., `GeneratePdfJob`) that extends `ShouldQueue`, then dispatch it after form submission. This prevents timeouts and improves user experience.
Is pontedilana/php-weasyprint suitable for JavaScript-heavy HTML pages?
No, this package relies on WeasyPrint, which does not execute JavaScript. For dynamic content with JS dependencies, consider alternatives like `spatie/pdf-to-html` (wkhtmltopdf) or headless Chrome solutions.
How do I install and configure pontedilana/php-weasyprint in Laravel?
First, install via Composer: `composer require pontedilana/php-weasyprint`. Then, ensure Python 3.x and WeasyPrint are installed on your server (`pip install weasyprint`). Configure the package in `config/services.php` if needed, or use it directly in your code.
What are the security risks of using exec() or shell_exec() with this package?
The package uses subprocess calls to invoke WeasyPrint, which can expose your system to command injection if input (e.g., URLs or HTML) isn’t sanitized. Always validate inputs using Laravel’s `Str::of()` or similar tools, and restrict execution to trusted sources.
Can I use this package in a Dockerized Laravel application?
Yes, Docker is highly recommended to manage the Python dependency. Use a multi-stage build with a Python layer to install WeasyPrint, then ensure your PHP container can execute the subprocess. Example: `FROM python:3.9-slim as python; pip install weasyprint`.
How does pontedilana/php-weasyprint compare to Dompdf for Laravel?
Dompdf is a pure PHP solution with no external dependencies, making it simpler to deploy but with less CSS3 support. WeasyPrint offers superior CSS3 rendering but requires Python. Choose Dompdf for lightweight needs or WeasyPrint for complex styling.
Will this package work in serverless environments like AWS Lambda?
Direct use is challenging due to Python dependencies, but you can wrap WeasyPrint in a separate microservice (e.g., FastAPI) and call it via HTTP from Lambda. Alternatively, use a containerized Lambda with Python pre-installed.
How do I handle concurrent PDF generation requests without overwhelming the server?
Use Laravel queues to distribute workloads. Dispatch PDF generation jobs to a worker pool (e.g., `GeneratePdfJob::dispatch($data)`), and monitor performance with Laravel Horizon. Consider dedicated workers for WeasyPrint to avoid resource contention.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport