laravel-dompdf表格单元格文本换行对齐异常问题求助
解决barryvdh/laravel-dompdf表格单元格文本换行缩进异常问题
问题现象
使用barryvdh/laravel-dompdf生成PDF时,表格单元格内文本自动换行后,第二行并非从左侧起始,而是偏向中间位置;但设置文本右对齐时该问题消失。
控制器配置代码:
Pdf::setOption(['dpi' => 150, 'defaultFont' => 'sans-serif']);
PDF页面HTML头部代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="assets/css/pdf-style.css"> <title>Table</title> </head>
排查与解决方法
重置表格单元格样式
大概率是CSS对表格单元格设置了非对称内边距或文本缩进,直接给单元格强制重置样式:td { padding: 4px; /* 统一上下左右内边距 */ text-indent: 0; /* 取消文本缩进 */ text-align: left; /* 明确指定左对齐 */ }更换默认字体
dompdf对sans-serif这类通用字体的渲染可能存在兼容问题,尝试指定具体字体:Pdf::setOption([ 'dpi' => 150, 'defaultFont' => 'Arial' ]);确保服务器系统中存在该字体,也可通过
fontDir配置项指定自定义字体路径。移除viewport元标签
dompdf对移动端viewport支持有限,建议移除HTML中的<meta name="viewport">标签,改用适配PDF的固定宽度样式:body { width: 210mm; /* 匹配A4纸宽度 */ margin: 0 auto; }启用严格CSS解析
在控制器中添加配置,强制dompdf使用严格的HTML/CSS解析规则:Pdf::setOption([ 'dpi' => 150, 'defaultFont' => 'sans-serif', 'isHtml5ParserEnabled' => true, 'isCssFloatEnabled' => true ]);
内容的提问来源于stack exchange,提问作者peuf
相关产品推荐
相关产品推荐

