hamdallah90 / easy-laravel-pdf
easy-laravel-pdf:一个Laravel包,用于使用Docker中的Puppeteer从视图或HTML生成PDF/图片,实现无缝集成。
1.0
2024-06-10 23:20 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
README
概览
Easy Laravel PDF 是一个Laravel包,它简化了在Laravel应用中生成PDF。此包使用一个Node.js服务 node-html-to-pdf
,可以在本地运行或通过Docker运行以将HTML转换为PDF。
安装
先决条件
- PHP 7.3 或更高版本
- Laravel 6.0 或更高版本
- Composer
- Node.js 和 npm(可选,如果在不使用Docker的情况下本地运行服务)
- Docker(可选,用于使用Docker容器)
安装包
-
通过Composer添加包
composer require hamdallah90/easy-laravel-pdf
-
发布配置: Laravel的包发现会自动注册服务提供者。要发布包配置,请运行
php artisan vendor:publish --tag=pdf-config
配置
编辑 config/easy-laravel-pdf.php
中已发布的配置文件以调整默认PDF选项等设置。
使用包
EasyLaravelPdf
提供了多种生成PDF文件的方法。以下是您如何在Laravel应用中使用它们的方法
加载和渲染视图
use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf; $pdf = EasyLaravelPdf::loadView('view.name', ['dataKey' => 'dataValue']); return $pdf->stream('example.pdf');
直接加载HTML内容
将原始HTML内容加载到PDF生成器中
use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf; EasyLaravelPdf::loadView('view.name', ['dataKey' => 'dataValue'])->save('/path/to/file.pdf');
获取PDF作为UploadedFile
获取PDF作为UploadedFile,这在测试或进一步操作时可能很有用
use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf; $file = EasyLaravelPdf::loadHtml('<h1>Test PDF</h1>')->getFile(); $file->store('save-to-s3-or-local-path')
直接将PDF流式传输到浏览器
将PDF直接流式传输到浏览器,这对于内联查看很有用
use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf; return EasyLaravelPdf::loadHtml('<h1>Test PDF</h1>')->stream('optional-filename.pdf'); // Streams the PDF; if a filename is provided, it will be used
配置和定制
您可以根据需要配置puppeteer选项和启动参数以更好地控制PDF生成
use Jouda\EasyLaravelPdf\Facades\EasyLaravelPdf; $pdf = EasyLaravelPdf::setOptions(['format' => 'A4']); $pdf->setPuppeteerLunchArgs(['--no-sandbox', '--disable-setuid-sandbox']); $pdf->loadHtml('<h1>Customized PDF</h1>'); $pdf->save('path/to/your/customized.pdf');
Node HTML to PDF 服务
此服务对于PDF生成至关重要,可以在本地或Docker容器中运行。
本地运行
- 导航到
node-html-to-pdf
目录。 - 安装依赖项
npm install
- 启动服务器
npm start
使用Docker运行
-
使用Dockerfile: 使用提供的Dockerfile构建Docker镜像
cd node-html-to-pdf docker build -t your-username/html-to-pdf . docker run -p 3000:3000 your-username/html-to-pdf
-
使用预构建镜像: 或者,您可以使用Docker Hub上可用的预构建Docker镜像
docker pull hamdallah/html-to-pdf docker run -p 3000:3000 hamdallah/html-to-pdf
支持
对于问题、功能请求或贡献,请使用此存储库的GitHub问题部分。