【问题标题】:Symfony2 PDF Generator Bundle [closed]Symfony2 PDF Generator Bundle [关闭]
【发布时间】:2013-10-11 12:36:01
【问题描述】:

我正在寻找一个易于使用且不需要 wkhtmltopdf 的 PDF 生成器包,因为我的共享托管服务器不支持此功能。

我尝试过https://github.com/psliwa/PdfBundle,但如果我按照文档进行操作,我只会在屏幕上得到响应(没有生成 PDF)。虽然这个in this question 有一个解决方案,但这个解决方案似乎过于复杂。

我还查看了ioalessio/IoTcpdfBundle,它似乎可以直接使用,但没有作曲家安装,而且我的网络服务器不支持供应商安装。

我也尝试过stedekay/SpraedPDFGeneratorBundle,但这只是抱怨找不到 Java 的简单错误。

虽然whiteoctober/WhiteOctoberTCPDFBundle 可能能够工作,但这只是创建了一个必须进一步使用的 TCPDF 对象,并且文档不是很全面。

我们将不胜感激任何建议(或有关如何使上述任何捆绑包正常工作的建议)。

【问题讨论】:

  • 您可以使用 TCPDF 库,但您必须为您的 html 元素提供内联样式

标签: symfony pdf


【解决方案1】:

我使用 SpraedPDFGeneratorBundle 并使用 Composer 从https://github.com/stedekay/SpraedPDFGeneratorBundle 安装它来激活它。我在AppKernel new Spraed\PDFGeneratorBundle\SpraedPDFGeneratorBundle()激活。

最后我执行了命令php composer.phar update,并在我的控制器中输入了这段代码:

 $html = $this->renderView('MyappJournalBundle:Default:index1.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"'
                    )
    );

它对我有用!

【讨论】:

    【解决方案2】:

    我绝对可以推荐带有树枝模板的KnpSnappyBundle

    我已经在生产环境中多次使用该库/捆绑包,并且没有遇到太多麻烦。

    (与当时遗留应用程序中的 tcpdf 和 dompdf 相比)。

    示例用法:

    $this->get('knp_snappy.pdf')->generateFromHtml(
        $this->renderView(
            'MyBundle:Foo:bar.html.twig',
            array(
                'some'  => $vars
            )
        ),
        '/path/to/the/file.pdf'
    );
    

    【讨论】:

    • 虽然 KnpSnappyBundle 是用于生成 PDF 的 goto 包,但它需要 wkpdftohtml,正如我最初的请求中所述,我不能使用它。
    • 抱歉,速读失败 - 不过可能对其他用户有帮助:D
    【解决方案3】:

    我是 SpraedPDFGeneratorBundle 的开发者。我的包使用 Java 库,因此您的服务器上需要一个有效的 JRE(6 或更高版本)。

    【讨论】:

    • stedekay 是否可以使用 spraed 生成画布元素?
    • 我从未使用过画布元素,但如果我理解正确,这些元素将由 Javascript 绘制。所以这是不可能的。
    【解决方案4】:

    如果您想在 Symfony3 上安装 SpraedPDFGeneratorBundle,请确保服务是:

    spraed.pdf.generator:
        class: Spraed\PDFGeneratorBundle\PDFGenerator\PDFGenerator
        arguments: [ "@kernel" ]
    

    这在文档的深处,但很难找到。

    您可能知道的另一件事是生成器使用了“The Flying Sauser”,它使用了一种特殊的 css。因此,通过阅读http://flyingsaucerproject.github.io/flyingsaucer/r8/guide/users-guide-R8.html#xil_36 中的相关内容,我发现我必须使用: @page { 边距:0 0.5cm;尺寸:21cm 26.5cm; } 对齐文档中的边距以使内容适合。

    【讨论】:

      【解决方案5】:

      您可以使用 EnseparHtml2pdfBundle。 看here了解更多详情

      【讨论】:

        【解决方案6】:

        你可以试试这个捆绑包。 MpdfPortBundle。 https://github.com/tasmanianfox/MpdfPortBundle

        【讨论】:

        • 在这种情况下,这不是你的错,因为问题是题外话,但请注意,一般来说,推荐某些工具或库的答案必须在答案中展示它如何解决手头的问题本身。
        猜你喜欢
        • 2014-03-28
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        相关资源
        最近更新 更多