rekalogika / gotenberg-pdf-bundle
使用Gotenberg API生成PDF的Symfony Bundle
1.3.0
2024-09-16 13:12 UTC
Requires
- gotenberg/gotenberg-php: ^1.1
- psr/http-client: ^1.0
- psr/http-message: ^2.0
- rekalogika/print: ^1.3
- rekalogika/print-contracts: ^1.3
- symfony/config: ^6.2 || ^7.0
- symfony/dependency-injection: ^6.2 || ^7.0
- symfony/http-kernel: ^6.2 || ^7.0
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单仓库。