DomPDF在Windows iis10的img标签中没有显示编码的svg



最近我开发了一个可以生成PDF的Laravel应用程序,开发过程是在ubuntu 21.10中使用Laravel sail完成的,并且它已经部署到IIS 10的Windows服务器上。

PDF包含使用编码svg呈现的图像:

<img style="width: 200px;" src="data:image/svg+xml;base64,{{ $base64_image }}" alt="">

$base64_image由以下代码行获得:

base64_encode(str_replace('<svg', '<svg fill="#000000" ',file_get_contents("img/image.svg"))),

这一行使用file_get_contents()函数检索svg图像,然后用#000000(黑色)填充svg,最后转换为base64字符串。

所以基本上我的<img>接收到的是一个普通字符串。这种方法在我的ubuntu开发服务器上完美地工作,但在IIS中根本没有显示图像。

我已经试过了:

  • 更新IIS站点管理器中的MIME类型。
  • 网页更新。配置允许SVG
  • 我已经使用了一个url的PNG图像托管在线

基本上在IIS服务器上,生成PDF时根本没有显示任何图像,只有一个带有消息

的正方形

图片未找到或类型未知

我能解决这个问题。

我之前的评论让我认为这不是DomPDF的问题,而是IIS以某种方式阻止内容的问题。经过一番调查,我发现:CSS,图像,JS没有加载在IIS

基本上IIS默认阻止静态内容,PDF作为静态文档,无法正确呈现。允许静态内容在网站中解决了这个问题。