最近我開發了一個生成 PDF 的 Laravel 應用程式,開發程序是在 ubuntu 21.10 中使用 laravel Sai 完成的,它已經部署到帶有 IIS 10 的 Windows Server 上。
PDF 包含使用編碼的 svg 呈現的影像:
<img style="width: 200px;" src="data:image/svg xml;base64,{{ $base64_image }}" alt="DomPDF 未在 Windows IIS 10 上的 img 標簽中顯示編碼的 svg">
通過$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 型別。
- 更新 web.config 以允許 SVG
- 我為在線托管的 PNG 影像使用了 url
基本上在 IIS 服務器上,生成 PDF 時根本沒有顯示影像,只是一個帶有訊息的正方形
找不到影像或型別未知
uj5u.com熱心網友回復:
我能夠解決這個問題。
我之前的評論讓我認為這不是 DomPDF 的問題,而是 IIS 以某種方式阻止內容的問題。經過一番調查,我發現:CSS、影像、JS 未在 IIS 中加載
基本上 IIS 默認會阻止靜態內容,而作為靜態檔案的 PDF 無法正確呈現。允許站點中的靜態內容解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/486837.html
