pmarien/html-to-pdf-bundle

pmarien/html-to-pdf的Symfony集成

安装: 45

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2024-02-09 17:04 UTC

This package is auto-updated.

Last update: 2024-09-09 18:33:49 UTC


README

pmarien/html-to-pdf的Symfony集成

  1. 需求
  2. 如何安装?
  3. 如何配置?
  4. 如何使用内部资源?
  5. 如何使用?
    1. 控制器(内联PDF)
    2. 控制器(下载PDF)
    3. 控制器(存储PDF文件)
    4. 使用Twig模板
      1. 控制器(内联PDF)
      2. 控制器(下载PDF)
      3. 控制器(存储PDF文件)

需求

此包需要PHP版本8.1或更高,以及Symfony版本5、6或7。

html-to-pdf库需要实现psr/http-messagepsr/http-factorypsr/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,必需参数:filenamehash)或通过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'
        ]
    );
}