我正在使用带有SpraedPDFGeneratorBundle的symfony框架来生成PDF。它完美无缺,直到我在使用https的服务器上使用它。 我正在使用twig-template并使用pdfGenerator进行渲染:
$html = $this->renderView("documents/pdf/document.html.twig", array([..]));
$pdfGenerator = $this->get('spraed.pdf.generator');
$pdf = $pdfGenerator->generatePDF($html);
图像被复制到tmp目录,模板用绝对路径加载它:
<img src="{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset(logo) }}" height="100" />
在我使用https服务器之前一直有效。图像不会显示在pdf上(但如果输出html,则会显示图像)。
如果我从https-redirect(在apache-site-config中)中排除tmp-dir(存储图像的位置):
RedirectMatch 301 ^/((?!tmp).*)$ https://mypage.com/$1
并将图像的路径更改为http://:
<img src="{{ 'http://' ~ app.request.httpHost ~ asset(logo) }}" height="100" />
它有效。
所以我认为问题是pdfgenerator无法从https加载图片。
我做错了什么还是错误?
编辑:
简短形式: 如果图像源以http开头,则可以加载图像。如果图像源以https开头,则无法加载图像。如果我回显pdf的html,则会显示图像,因此绝对URI是正确的。