pmarien / html-to-pdf-bundle
pmarien/html-to-pdf的Symfony集成
Requires
- php: >=8.1
- pmarien/html-to-pdf: ^1.0
- symfony/framework-bundle: ^5.0|^6.0|^7.0
- symfony/psr-http-message-bridge: ^2.0|^6.0|^7.0
Requires (Dev)
- roave/security-advisories: dev-latest
- twig/twig: ^3.8
README
pmarien/html-to-pdf的Symfony集成
- 需求
- 如何安装?
- 如何配置?
- 如何使用内部资源?
- 如何使用?
- 控制器(内联PDF)
- 控制器(下载PDF)
- 控制器(存储PDF文件)
- 使用Twig模板
- 控制器(内联PDF)
- 控制器(下载PDF)
- 控制器(存储PDF文件)
需求
此包需要PHP版本8.1或更高,以及Symfony版本5、6或7。
html-to-pdf库需要实现psr/http-message
、psr/http-factory
和psr/http-client
。
如何安装?
应通过composer安装此包:pmarien/html-to-pdf
。
composer req pmarien/html-to-pdf
如何配置?
如果您想配置此包,应添加文件config/packages/html_to_pdf.yaml
。
如果没有API密钥配置,此包将作为匿名客户端运行,这会导致每天生成的PDF文件限制为3个。
html_to_pdf: apiKey: 'YOUR_API_KEY' assetScheme: 'http' #optional to use a different asset location assetHost: 'example.com' #optional to use a different asset location
如何使用内部资源?
如果您想在PDF中使用资源,它们必须通过http公开访问,以便PDF生成器使用。有时您想使用资源,但又不想发布它们。对于这些情况,此包包含一个AssetAccessController,它需要文件保护哈希。
必须通过配置启用路由(config/routes/html_to_pdf.yaml
)
HtmlToPdfBundle: resource: '@HtmlToPdfBundle/Resources/config/routes.xml'
资源URI可以手动构建(路由名称:html_to_pdf_get_file
,必需参数:filename
和hash
)或通过twig过滤器
<img src="{{ '/assets/images/test.png'|pdfAsset }}" alt="Test">
如果您手动构建URI,则哈希可以通过PMA\HtmlToPdfBundle\Asset\AssetAccessorInterface::getHash
生成(作为symfony服务可用)。
如何使用?
如果您想直接从HTML生成PDF文件,应使用PMA\HtmlToPdfBundle\Bridge\FoundationBridge
作为生成器。它在服务容器中可用,可能由symfony的依赖注入自动注入。
控制器(内联PDF)
public function showAction(\PMA\HtmlToPdfBundle\Bridge\FoundationBridge $generator):\Symfony\Component\HttpFoundation\Response{ return $generator->inlineResponse( 'test.pdf', '<html><body><p>This is a test!</p></body></html>' ); }
控制器(下载PDF)
public function downloadAction(\PMA\HtmlToPdfBundle\Bridge\FoundationBridge $generator):\Symfony\Component\HttpFoundation\Response{ return $generator->attachmentResponse( 'test.pdf', '<html><body><p>This is a test!</p></body></html>' ); }
服务(存储PDF文件)
public function storeFile(\PMA\HtmlToPdfBundle\Bridge\FoundationBridge $generator):void { $generator->createFile( '/your/project/file-storage/test.pdf', '<html><body><p>This is a test!</p></body></html>' ); }
Twig
如果您想从twig模板生成PDF文件,应使用PMA\HtmlToPdfBundle\Bridge\TwigBridge
作为生成器。它在服务容器中可用,可能由symfony的依赖注入自动注入。它需要在项目中安装Twig。
控制器(内联PDF文件)
public function showAction(\PMA\HtmlToPdfBundle\Bridge\TwigBridge $generator):\Symfony\Component\HttpFoundation\Response{ return $generator->inlineResponse( 'test.pdf', 'pdf-templates/test.pdf.twig', [ 'test'=>'Test' ] ); }
控制器(下载PDF文件)
public function downloadAction(\PMA\HtmlToPdfBundle\Bridge\TwigBridge $generator):\Symfony\Component\HttpFoundation\Response{ return $generator->attachmentResponse( 'test.pdf', 'pdf-templates/test.pdf.twig', [ 'test'=>'Test' ] ); }
服务(存储PDF文件)
public function storeFile(\PMA\HtmlToPdfBundle\Bridge\TwigBridge $generator):void { $generator->createFile( '/your/project/file-storage/test.pdf', 'pdf-templates/test.pdf.twig', [ 'test'=>'Test' ] ); }