DomPDF 不在 Windows IIS 10 上的 img 标签中显示编码的 svg

DomPDF not showing encoded svg in img tag on Windows IIS 10

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

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 服务器上生成 PDF 时根本不显示任何图像,只有一个带有消息的正方形

image not found or type unknown

我能够解决这个问题。

我之前的评论让我认为这不是 DomPDF 的问题,而是 IIS 以某种方式阻止内容的问题。经过一番调查,我发现:CSS, Images, JS not loading in IIS

基本上 IIS 默认会阻止静态内容,而 PDF 是静态文档,无法正确呈现。允许站点中的静态内容解决了该问题。