spraed/pdf-generator-bundle

此包可以从 Twig/HTML 模板在 Symfony 中创建(多个)PDF 文件。

安装: 454,433

依赖项: 0

建议者: 0

安全性: 0

星标: 51

关注者: 5

分支: 15

开放问题: 2

类型:symfony-bundle

v1.12.1 2024-03-06 19:48 UTC

This package is auto-updated.

Last update: 2024-09-06 21:01:38 UTC


README

SpraedPDFGeneratorBundle 可以将 HTML 文档生成 PDF。此包允许您非常容易地添加页面页眉和页脚(可以在第一页禁用/切换)。

它使用基于 [Flying Saucer 项目][flyingsaucer] 的小 jar 库。因此,您需要在服务器上运行 Java(Java 6 或更高版本)。

Total Downloads Latest Stable Version

使用 Composer 安装

composer require spraed/pdf-generator-bundle

使用方法

services.yml 中注册了一个服务来生成 PDF 文件。只需从服务类调用 PDF 生成器,并通过 generatePDF() 方法使用 XHTML 和 PDF 的 URL 调用即可

$html = $this->renderView('AcmeDemoBundle:Default:index.html.twig');
$pdfGenerator = $this->get('spraed.pdf.generator');

您还可以设置编码选项(您可以将第二个参数留空,默认为 UTF-8)

$pdfGenerator->generatePDF($html, 'UTF-8');

其他内容将由控制器中的 Response 对象处理,即

    $html = $this->renderView('ACMEYourBundle:Print:print.html.twig');
    $pdfGenerator = $this->get('spraed.pdf.generator');

    return new Response($pdfGenerator->generatePDF($html),
                    200,
                    array(
                        'Content-Type' => 'application/pdf',
                        'Content-Disposition' => 'inline; filename="out.pdf"'
                    )
    );

如果您希望 PDF 作为下载提供,只需将 'Content-Disposition' 中的 'inline' 更改为 'attachment'。

请确保您 HTML 中的所有资产都使用绝对路径链接,因为 HTML 将被复制到服务器上的 tmp 文件夹中。如果您想在 Twig 中添加图像,它应该看起来像这样

    {{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('images/foo.jpg') }}

您还可以在一次堆栈中打印多个 PDF。例如,您从多个 HTML 文件生成多个文档,并希望将这些文档输出到一个巨大的 PDF 文件中,可以使用 'generatePDFs' 方法,该方法接受一个渲染后的 HTML 视图数组并将它们合并在一起

    $twigs[0] = 'SpraedSomethingBundle:Print:print_pdf_one.html.twig'
    $twigs[1] = 'SpraedSomethingBundle:Print:print_pdf_two.html.twig'

    $htmlCollection = array();
    foreach($twigs as $twig){
            $htmlCollection[] = $this->renderView($twig);
    }

    return new Response($pdfGenerator->generatePDFs($htmlCollection, 'UTF-8'),
        200,
        array(
            'Content-Type' => 'application/pdf',
            'Content-Disposition' => 'inline; filename="out.pdf"'
        )
    );

要定义合适的打印 CSS,您可能需要阅读 w3.org 关于此内容的提示:[w3.org] [w3.org]: http://www.w3.org/TR/css3-page/ [flyingsaucer]: https://github.com/flyingsaucerproject/flyingsaucer [spraed]: http://www.spraed.com

配置

示例配置选项

    spraed_pdf_generator:
        command:
            env:
                FOO: BAR
        java:
            full_path: /path/to/java

命令环境将在运行 Java 应用程序时添加环境变量。