optimus/pdf-bot

0.5.4 2023-12-28 14:49 UTC

This package is auto-updated.

Last update: 2024-08-28 16:05:27 UTC


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 中的 serversecret 参数。

<?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)。有关更多信息,请参阅许可证文件