使用phpword将docx转换为pdf

使用phpword将docx转换为pdf,pdf,docx,dompdf,phpword,Pdf,Docx,Dompdf,Phpword,我想使用以下命令将docx文件转换为pdf 我的代码如下所示: $FilePath = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".docx"; $FilePathPdf = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".pdf"; //DOCX TO PDF require_once APPPATH.'third_party/phpword/boots

我想使用以下命令将docx文件转换为pdf

我的代码如下所示:

$FilePath = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".docx";
$FilePathPdf = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".pdf";

//DOCX TO PDF
require_once APPPATH.'third_party/phpword/bootstrap.php';

$rendererLibraryPath = PHPWORD_BASE_DIR . '/vendor/dompdf/dompdf';
\PhpOffice\PhpWord\Settings::setPdfRendererPath($rendererLibraryPath);
\PhpOffice\PhpWord\Settings::setPdfRendererName('DomPDF');

$phpWord = new \PhpOffice\PhpWord\PhpWord();

//Load temp file
$phpWord = \PhpOffice\PhpWord\IOFactory::load($FilePath);

//Save it
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord , 'PDF');
$xmlWriter->save($FilePathPdf, true);
但我生成了一个空的pdf文件:

路径正确。docx包含内容

我尝试使用tcpdf渲染:

$rendererLibraryPath = PHPWORD_BASE_DIR . '/vendor/tecnickcom/tcpdf';
\PhpOffice\PhpWord\Settings::setPdfRendererPath($rendererLibraryPath);
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');

我的pdf文件有两页没有内容:

最后,我找到了一个免费的替代解决方案安装libreoffice:

$FilePath = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".docx";
$FilePathPdf = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".pdf";

require_once APPPATH.'third_party/phpword/bootstrap.php';
$template = new \PhpOffice\PhpWord\TemplateProcessor(APPPATH.'media/Plantillas/Factura/Factura.docx');

foreach($data as $key => $value){
    $template->setValue($key, $value);
}

$template->saveAs($FilePath);

shell_exec($this->CI->config->item('libreoffice_exec')." --headless --convert-to pdf --outdir \"".$Path."\" \"$FilePath\"");
使用以下参数调用soffice.exe CLI:

soffice.exe --headless --convert-to pdf --outdir "C:/media/Documentos/Facturas/pdf" "C:/media/Documentos/Facturas/Factura1.docx";

最后,我找到了一个安装libreoffice的免费替代解决方案:

$FilePath = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".docx";
$FilePathPdf = APPPATH."media/Documentos/Facturas/Factura ".$FacturaId.".pdf";

require_once APPPATH.'third_party/phpword/bootstrap.php';
$template = new \PhpOffice\PhpWord\TemplateProcessor(APPPATH.'media/Plantillas/Factura/Factura.docx');

foreach($data as $key => $value){
    $template->setValue($key, $value);
}

$template->saveAs($FilePath);

shell_exec($this->CI->config->item('libreoffice_exec')." --headless --convert-to pdf --outdir \"".$Path."\" \"$FilePath\"");
使用以下参数调用soffice.exe CLI:

soffice.exe --headless --convert-to pdf --outdir "C:/media/Documentos/Facturas/pdf" "C:/media/Documentos/Facturas/Factura1.docx";