rekalogika/gotenberg-pdf-bundle

使用Gotenberg API生成PDF的Symfony Bundle

资助包维护!
priyadi

安装次数: 1,452

依赖项: 0

建议者: 0

安全性: 0

星级: 10

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.3.0 2024-09-16 13:12 UTC

This package is auto-updated.

Last update: 2024-09-16 13:12:52 UTC


README

使用Gotenberg生成PDF的Symfony Bundle。

特性

  • 通过Symfony Flex、Symfony CLI和Docker Compose轻松部署。只需安装包,即可开始生成PDF。
  • rekalogika/print-contracts中提供高级接口。如果未来Gotenberg过时了,我们希望只需要替换这个包,而不需要更改我们的代码。
  • 提供纸张尺寸和页面布局的抽象。
  • 利用Symfony HTTP客户端。在Symfony探查器中查看请求和响应以进行调试。
  • 由于Gotenberg已经完成了繁重的工作,因此无需处理Chrome实例、CLI工具、Puppeteer、NodeJS等。
  • 可扩展的架构。适用于低流量开发和大规模使用。如果您的使用超出了解决方案,无需重新设计。只需通过Docker Compose或您使用的容器编排工具添加更多Gotenberg实例。

安装

预安装清单

  • 确保全局已安装Composer,如Composer文档中的安装章节中所述。运行composer about进行验证。
  • 确保您的项目已安装并启用了Symfony Flex(默认情况下已启用)。运行composer why symfony/flex进行验证。

打开命令行,进入项目目录,并执行

composer config extra.symfony.allow-contrib true
composer require rekalogika/gotenberg-pdf-bundle

快速入门

清单

  • 确保您已安装Docker Compose。运行docker compose version进行验证。
  • 确保您已安装Symfony CLI。运行symfony version进行验证。

要启动Gotenberg服务器(以及Docker Compose配置中注册的其他服务),请运行

docker compose up -d

然后使用Symfony CLI启动Web服务器

symfony serve

创建一个用于生成PDF文件的示例控制器

namespace App\Controller;

use Rekalogika\Contracts\Print\PageOrientation;
use Rekalogika\Contracts\Print\PdfGeneratorInterface;
use Rekalogika\Print\PageLayout;
use Rekalogika\Print\Paper;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\Routing\Annotation\Route;

class AppController extends AbstractController
{
    #[Route('/pdf')]
    public function index(PdfGeneratorInterface $pdfGenerator): Response
    {
        $pdf = $pdfGenerator->generatePdfFromHtml(
            htmlContent: '<h1>Hello World</h1>',
            paper: Paper::A4(),
            pageLayout: PageLayout::inMm(PageOrientation::Portrait, 30)
        );

        return new StreamedResponse(
            callback: fn () => fpassthru($pdf->detach()),
            status: 200,
            headers: [
                'Content-Type' => 'application/pdf',
            ]
        );
    }
}

然后打开您的浏览器,访问http://localhost:8000/pdf

文档

rekalogika/gotenberg-pdf-bundle

许可证

MIT

贡献

《rekalogika/gotenberg-pdf-bundle》存储库是从主存储库分割出来的只读存储库。问题和拉取请求应提交到rekalogika/print-src单仓库。