PHPWord中如何将两个logo对齐在同一行?求排查代码问题
问题分析与解决
嘿,我一眼就揪出问题啦!你现在的代码里,两个logo被分别放在了不同的表格行中——第一个if块里调用了$table->addRow()创建一行放第一个logo,第二个if块又调用了一次$table->addRow()新建一行放第二个logo,这可不就导致它们不在同一行吗😉
修正方案
要让两个logo处于同一行,你需要把它们放在同一表格行的不同单元格里。也就是说,先创建一行,然后在这一行内分别添加单元格来放置两个logo,而不是每个logo都单独新建一行。
修正后的代码
// 先判断至少有一个logo存在再创建行,避免生成空行 if (file_exists($logo) || file_exists($logo2)) { $table->addRow(); // 添加第一个logo的单元格(如果文件存在) if (file_exists($logo)) { $table->addCell(20000, array('bgColor' => 'ffffff', 'spaceBefore' => 0, 'spaceAfter' => 0, 'spacing' => 0 ), $fontStyleIndexParaTitle )->addImage($logo, array('align' => 'left','width' => 70, 'height' => 70)); } // 添加第二个logo的单元格(如果文件存在) if (file_exists($logo2)) { $table->addCell(20000, array('bgColor' => 'ffffff', 'spaceBefore' => 0, 'spaceAfter' => 0, 'spacing' => 0 ), $fontStyleIndexParaTitle )->addImage($logo2, array('align' => 'right', 'width' => 130)); } }
关键修改说明
- 把创建行的
$table->addRow()移到了外层判断中,确保两个logo(如果都存在)会被放在同一行里 - 每个logo的单元格添加逻辑都嵌套在同一行的创建逻辑内,彻底避免重复创建行的问题
- 增加了外层的
||判断,只有当至少有一个logo存在时才创建这一行,不会生成多余的空行
内容的提问来源于stack exchange,提问作者aman121
相关产品推荐
相关产品推荐

