2017-03-24 53 views
0

我想用转换一个的docx文件为PDF phpword转换的docx为PDF phpword

我的代码看起来是这样的:

$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文件:LINK TO FILE

路径是正确的.docx有内容

我试着用tcpdf渲染:

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

和我的pdf文件有2页,而内容:LINK TO 2ND FILE

回答

1

终于让我找到一个免费的替代解决方案安装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";