PHPWord生成PDF时表格单元格无边框设置失效问题求助
PHPWord表格TCPDF转PDF时无边框单元格显示异常问题
问题描述
使用PHPWord创建表格时,给单元格1设置了黑色边框,单元格2设置为无边框,生成的docx文件显示正常(单元格1有边框、单元格2无框),但通过TCPDF渲染器生成PDF时,所有单元格都显示边框。
相关代码
<?php include_once '../vendor/autoload.php'; $phpWord = new \PhpOffice\PhpWord\PhpWord(); use PhpOffice\PhpWord\Element\Table; use PhpOffice\PhpWord\TemplateProcessor; use PhpOffice\PhpWord\ComplexType\TblWidth; use PhpOffice\PhpWord\Settings; use PhpOffice\PhpWord\SimpleType\Border; $styleCell1 = array('borderColor' =>'black', 'borderSize' => 6); $styleCell2 = array('borderColor' =>'black', 'borderSize' => 0,'borderStyle' => Border::NONE); $section = $phpWord->addSection(); $table = $section->addTable('testing'); $table->addRow(); $table->addCell(700,$styleCell1)->addText('cell 1'); $table->addCell(500,$styleCell2)->addText('cell 2'); $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); $objWriter->save('1411_testingTable.docx'); Settings::setPdfRendererPath('../vendor/tecnickcom/tcpdf'); Settings::setPdfRendererName(Settings::PDF_RENDERER_TCPDF); $phpWord->save('1411_testingTable.pdf','PDF');
效果对比
- docx输出:单元格1显示黑色边框,单元格2无任何边框
- PDF输出:两个单元格均显示黑色边框
解决方案
TCPDF对PHPWord的全局borderStyle参数解析存在兼容问题,需单独设置单元格四个方向的边框样式,而非使用全局配置。修改后的单元格2样式代码如下:
$styleCell2 = [ 'topBorderStyle' => Border::NONE, 'bottomBorderStyle' => Border::NONE, 'leftBorderStyle' => Border::NONE, 'rightBorderStyle' => Border::NONE, 'borderSize' => 0, ];
替换原代码中的$styleCell2定义后,TCPDF生成的PDF将正确渲染无边框的单元格。
若此方法仍不生效,可尝试更换PDF渲染器(如DomPDF),部分渲染器对PHPWord样式的支持更完善。
内容的提问来源于stack exchange,提问作者Premlatha
相关产品推荐
相关产品推荐

