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

使用PHPWord将DOCX转PDF时如何保留图形色彩?

解决方案:DOCX转PDF保留图形色彩

问题根源

你当前使用的TCPDF渲染器已被PhpWord废弃,它对Word文档中的图形色彩、复杂格式支持有限,这是导致色彩丢失和格式错乱的核心原因。官方明确推荐使用DomPDF或MPDF替代,其中MPDF对图形和色彩的还原度更高。


方案1:切换为MPDF渲染器

这是最直接的修复方式,步骤如下:

  1. 安装MPDF依赖

    composer require mpdf/mpdf
    
  2. 修改转换代码,替换TCPDF相关配置:

    <?php
    require_once 'vendor/autoload.php';
    use PhpOffice\PhpWord\IOFactory as WordIOFactory;
    use PhpOffice\PhpWord\Settings;
    
    // 切换为MPDF渲染器
    Settings::setPdfRendererName(Settings::PDF_RENDERER_MPDF);
    Settings::setPdfRendererPath('vendor/mpdf/mpdf');
    
    $phpWord = WordIOFactory::load('test/graph.docx', 'Word2007');
    $phpWord->save('graph.pdf', 'PDF');
    

方案2:使用LibreOffice命令行转换(备选,兼容性更强)

如果PhpWord的渲染器仍无法满足需求,可借助LibreOffice的命令行工具,它对Word文档的格式和图形还原度几乎完美:

  1. 确保服务器已安装LibreOffice
  2. 执行转换命令(PHP中可通过exec调用):
    <?php
    $docxPath = 'test/graph.docx';
    $pdfPath = 'graph.pdf';
    // Windows系统下替换为soffice.exe路径
    exec('libreoffice --headless --convert-to pdf "'.$docxPath.'" --outdir "'.dirname($pdfPath).'"');
    

补充说明

  • 若DOCX中的图形是Word内置矢量形状,MPDF通常能较好保留色彩;如果是嵌入式SVG,部分复杂样式可能仍需调整,可尝试将SVG导出为PNG/JPG后重新插入DOCX再转换。
  • 避免使用已废弃的TCPDF渲染器,后续版本的PhpWord可能完全移除对它的支持。

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:25:24