使用DOMPDF生成PDF时内容溢出右侧及图片比例异常的解决方法
解决DOMPDF转换PDF时图片比例失真与内容溢出右侧的问题
一、内容超出页面右侧的解决方法
- 调整PDF页面边距:在PHP代码中给DOMPDF设置合理边距,避免内容撑满页面导致溢出。A4纸默认宽度210mm,设置左右各15mm边距后,可用宽度更适配网页内容:
$dompdf->setPaper('A4', 'portrait'); // 设置上、右、下、左边距,单位为毫米 $dompdf->setMargins(15, 15, 15, 15); - 添加打印专属CSS:在目标网页(bdp.html)的
<head>中加入@media print规则,强制内容宽度适配PDF页面:@media print { * { box-sizing: border-box; } body, .page-container { max-width: 180mm; /* 210mm - 15mm*2 */ margin: 0 auto; padding: 0 15mm; } }
二、图片比例失真的解决方法
- 强制图片保持比例:在网页CSS中给图片添加自适应规则,避免固定宽高导致失真:
img { max-width: 100%; height: auto !important; } - 优化DOMPDF解析配置:开启HTML5解析器,让DOMPDF更好识别图片原始尺寸,同时确保远程图片加载权限已开启(你的代码已设置
isRemoteEnabled):$options->set('isHtml5ParserEnabled', true);
修改后的完整PHP代码示例
// Instantiate and use the dompdf class $options = new Options(); // 允许加载远程文件 $options->set('isRemoteEnabled', true); // 启用HTML5解析器,提升现代HTML元素支持 $options->set('isHtml5ParserEnabled', true); $dompdf = new Dompdf($options); $dompdf->loadHtmlFile('https://devcoursetransfer.northcarolina.edu/bdp.html'); // 设置A4纵向纸张与边距 $dompdf->setPaper('A4', 'portrait'); $dompdf->setMargins(15, 15, 15, 15); $dompdf->render(); ob_clean(); $dompdf->stream('Test.pdf'); exit;
内容的提问来源于stack exchange,提问作者developer981
相关产品推荐
相关产品推荐

