Symfony 4-DomPdf在Heroku的生产环境中不起作用:奇怪的字符

问题描述 投票:0回答:1

我在symfony 4上使用dompdf生成pdf。一切都在本地开发人员中进行。我试图在Heroku上的产品中启动我的应用程序,但是当我进入生成PDF的链接时,得到的是:

enter image description here

我告诉自己,这来自要求,他必须错过Heroku上的东西。

这里是运行dompdf的清单:

需求

  • PHP版本5.4.0或更高版本
  • DOM扩展名
  • GD扩展名
  • MBString扩展名
  • php-font-lib
  • php-svg-lib

我有PHP 7.3

并且在我的composer.json中,我已经:

"require": {

//...
"ext-mbstring": "*",
"ext-gd": "*",
"dompdf/dompdf": "^0.8.3",
"phenx/php-font-lib": "^0.5.1",
"phenx/php-svg-lib": "^0.3.3",
}

并且根据Heroku文档,默认情况下启用DOM:

enter image description here

要生成一些pdf,请在我的php文件中:

public function generatePdf(OrdreMission $ordre)
    {
        // Configure Dompdf according to your needs
        $pdfOptions = new Options();
        $pdfOptions->setIsRemoteEnabled(true);



        // Instantiate Dompdf with our options
        $dompdf = new Dompdf();
        $dompdf->setOptions($pdfOptions);
        // $dompdf->set_option('isHtml5ParserEnabled', true);

        // Retrieve the HTML generated in our twig file

        $html = "<link type='text/css href='/css/bootstrap.min.css' rel='stylesheet'>" . $this->templating->render('ordre_mission/pdf.html.twig', [
            'ordre' => $ordre,
        ]);


        // Load HTML to Dompdf
        $dompdf->loadHtml($html);

        // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
        $dompdf->setPaper('A4', 'portrait');

        // Render the HTML as PDF
        $dompdf->render();

        // Output the generated PDF to Browser (inline view)
        $dompdf->stream("mypdf.pdf", [
            "Attachment" => false,
        ]);
    }

在开发环境中没问题,但在生产环境中没关系

有人可以帮我吗?

php symfony heroku dompdf production
1个回答
1
投票

我有类似的问题。

我通过heroku内部的日志找到了解决方案。

问题是所有控制器都需要:

Symfony\Component\HttpFoundation\Response

退货,您不提供。

控制器方法返回null。

解决方案很简单,您需要在流dompdf之后提供返回响应。

它不会达到它,因为您将首先传输pdf,但是某种程度上它需要在heroku服务器中。

© www.soinside.com 2019 - 2024. All rights reserved.