You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:46:16