optimus / pdf-bot
Installs: 15 153
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 2
Open Issues: 0
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 integration for pdf-bot, a Node microservice for generating PDFs using headless Chrome.
Installation
composer require optimus/pdf-bot 0.1.*
Add the service provider to config/app.php
// ... other service providers Optimus\PdfBot\PdfBotServiceProvider::class,
Publish the config file.
php artisan vendor:publish provider="Optimus\PdfBot\PdfBotServiceProvider"
You also need to create a controller for receiving webhooks.
<?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 } }
And add its route to your routes
<?php $router->post('/webhooks/pdf', '\Infrastructure\Webhooks\Controllers\PdfController@receive');
Now you can access pdf-bot
using
$pdfBot = app()->make(\Optimus\PdfBot\PdfBot::class);
or by adding the including facade to your facades.
Configuration
As a minimum you should change the server
and secret
parameters in config/optimus.pdfbot.php
.
<?php return [ 'secret' => 'secret-used-for-generating-signature', 'server' => 'http://url-to-pdf-bot-server', 'header-namespace' => 'X-PDF-' ];
Usage example
Now you are ready to generate PDF's. Start by pushing a URL to the PDF server for generation.
$pdfBot = app()->make(\Optimus\PdfBot\PdfBot::class); $pdfBot->push('https://invoices.traede.com/1', [ 'type' => 'invoice', 'id' => 1 ]);
Now this will be added to your PDF queue. At some point your PDF controller method (onPdfReceived
) will receive a request with the path to the file. In your controller you can decide what to do with it.
<?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; } } }
Now the invoice's location is saved on the correct invoice.
Issues
Please report issues to the issue tracker
License
The MIT License (MIT). Please see License File for more information.