DomPDF v2.0.3 默认无法解析相对路径图片,需将 的 src 改为服务器绝对文件路径(如 $_SERVER['DOCUMENT_ROOT'] 拼接),并确保图片存在且 Web 服务器有读取权限。
dompdf v2.0.3 默认无法解析相对路径图片,需将 `` 的 `src` 改为服务器绝对文件路径(如 `$_server['document_root']` 拼接),并确保图片存在且 web 服务器有读取权限。
在使用 DomPDF(尤其是 v2.0.3)生成含图片的 PDF 时,常见问题之一是 PNG(或其他格式)图片无法显示,仅呈现空白或占位符(如您截图中所示)。根本原因在于:DomPDF 渲染时运行于服务端 PHP 环境,它不通过浏览器请求资源,因此不支持相对 URL 或 HTTP 协议路径(如 http://localhost/...),而必须使用可被 PHP 文件系统直接读取的本地绝对路径。
✅ 正确做法是:将
替换为基于服务器文档根目录的绝对文件路径。推荐写法如下:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
// ✅ 关键修复:使用 $_SERVER['DOCUMENT_ROOT'] 构建绝对文件系统路径
$logoPath = $_SERVER['DOCUMENT_ROOT'] . '/pic/cvsu.png';
$html = <<<HTML
<html>
<head><title>Sample PDF</title></head>
<body>
<h1>Sample PDF with Text and Image</h1>
<p>This is a sample PDF generated using dompdf with PHP.</p>
<img src="$logoPath" alt="CVSU Logo" style="max-width:90%">
</body>
</html>
HTML;
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("sample_pdf.pdf", ["Attachment" => false]);
?>⚠️ 注意事项:
- 路径有效性验证:请先确认 $_SERVER['DOCUMENT_ROOT'] . '/pic/cvsu.png' 对应的文件真实存在(例如 XAMPP 下可能是 C:/xampp/htdocs/pic/cvsu.png),且具有 PHP 进程的读取权限(Windows 通常默认满足,Linux/macOS 需检查文件权限)。
- 避免 HTTP URL:src="http://localhost/..." 在 DomPDF 中会被忽略(除非显式启用 isRemoteEnabled = true 且配置允许远程获取——但该方式不稳定、慢且存在安全风险,不推荐用于生产环境)。
- 不依赖 base_path() 或 Laravel 辅助函数:本例为原生 PHP + XAMPP 环境,无需引入框架逻辑;$_SERVER['DOCUMENT_ROOT'] 是最轻量、兼容性最佳的选择。
- 调试建议:可在生成前加入 if (!file_exists($logoPath)) { die("Image not found: $logoPath"); } 快速定位路径错误。
? 补充提示:若项目结构复杂(如图片不在 DOCUMENT_ROOT 下),可改用 __DIR__ 或 realpath() 构建路径,例如 realpath(__DIR__ . '/../public/pic/cvsu.png'),确保路径解析准确无歧义。
只要路径正确、文件可读,DomPDF v2.0.3 即可无缝渲染 PNG、JPG、GIF 等常见格式图片,生成高质量 PDF。


















