optimus / pdf-bot
0.5.4
2023-12-28 14:49 UTC
Requires
- guzzlehttp/guzzle: ^6.3|^7.0
- laravel/framework: ~5.1|~6.0|~7.0|~8.0|~9.0|~10.0
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.1
- phpunit/phpunit: ~4.7
- satooshi/php-coveralls: dev-master@dev
README
Laravel 集成 pdf-bot,一个用于使用无头 Chrome 生成 PDF 的 Node 微服务。
安装
composer require optimus/pdf-bot 0.1.*
将服务提供者添加到 config/app.php
// ... other service providers Optimus\PdfBot\PdfBotServiceProvider::class,
发布配置文件。
php artisan vendor:publish provider="Optimus\PdfBot\PdfBotServiceProvider"
您还需要创建一个用于接收 webhook 的控制器。
<?php namespace Infrastructure\Webhooks\Controllers; use Illuminate\Http\Request; use Optimus\PdfBot\PdfBotController; class PdfController extends PdfBotController { protected function onPdfReceived(array $data, Request $request) { // Do stuff with PDF } }
并将其路由添加到您的路由中
<?php $router->post('/webhooks/pdf', '\Infrastructure\Webhooks\Controllers\PdfController@receive');
现在您可以通过
$pdfBot = app()->make(\Optimus\PdfBot\PdfBot::class);
或通过将包括外观添加到您的外观中。
配置
至少您应该更改 config/optimus.pdfbot.php
中的 server
和 secret
参数。
<?php return [ 'secret' => 'secret-used-for-generating-signature', 'server' => 'http://url-to-pdf-bot-server', 'header-namespace' => 'X-PDF-' ];
使用示例
现在您已准备好生成 PDF。首先将 URL 推送到 PDF 服务器进行生成。
$pdfBot = app()->make(\Optimus\PdfBot\PdfBot::class); $pdfBot->push('https://invoices.traede.com/1', [ 'type' => 'invoice', 'id' => 1 ]);
现在这将被添加到您的 PDF 队列中。在某个时刻,您的 PDF 控制器方法(onPdfReceived
)将接收到指向文件的请求。在您的控制器中,您可以决定如何处理它。
<?php namespace Infrastructure\Webhooks\Controllers; use Illuminate\Http\Request; use Optimus\PdfBot\PdfBotController; class PdfController extends PdfBotController { protected function onPdfReceived(array $data, Request $request) { $meta = $data['meta']; $s3 = $data['s3']; switch ($meta['type']) { case 'invoice': $invoice = \Invoice::find($meta['id']); $invoice->pdf = $s3['path']['key']; $invoice->save(); break; } } }
现在发票的位置已保存到正确的发票中。
问题
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。