tp5 使用phpword 替换word模板
作者:互联网
一、首先composer安装PHPword,就不多说了
二、然后是把模板中要替换的部分用变量代替
三、把原始的模板文件放入项目目录,tp框就放在了public/upload/目录下
四、
查看php.ini中是否已经开启了com.allow_dcom = true 从php/ext/里面查找一下有没有这个php_com_dotnet.dll这个文件 如果没有网上下载个,一般都会有的吧应该大概可能。。 然后查找这个php.ini里面查找下#extension=php_com_dotnet.dll把前面的#号去掉 如果找不到就复制,手动添加一下 然后输出下phpinfo() 看看有没有com_dotnet COM support enabled DCOM support enabled .Net support enabled 表示COM组件开启成功
五、
然后新建一个php文件在里面写上: $com = new COM('word.application'); (#注意word.application 是电脑中必须有word文档才可以的) echo $com; 如果没错的话应该会显示 Microsoft Word 说明COM扩展已经安装完成了!
四、代码
1 public function word2pdf() 2 { 3 4 5 $server=$_SERVER['DOCUMENT_ROOT']; 6 // $filenamedoc =$server.'/upload/basedoc/one.docx'; 7 $filenamedoc =$server.'/'.$templet['url'];//模板路径 8 $filenamepdf = $server.'/upload/basedoc/one'.$templet['id'].'_new.docx';//替换变量,新的word路径 9 $fiel='/upload/basedoc/one'.$templet['id'].'_new'.time().'.pdf';//word转换pdf路径 10 $pdf = $server.$fiel; 11 $tmp=new \PhpOffice\PhpWord\TemplateProcessor($filenamedoc);//打开模板 12 $tmp->setValue('name',$sq); 13 $tmp->setValue('hcwz',$hcwz); 14 15 $tmp->setValue('ayear',$apply_date_y); 16 $tmp->setValue('amonth',$apply_date_m); 17 $tmp->setValue('aday',$apply_date_d); 18 19 $tmp->setValue('year',date("Y",time())); 20 $tmp->setValue('month',date("m",time())); 21 $tmp->setValue('day',date("d",time())); 22 $tmp->setValue('mishu',$mishu);//${year}年${month}月${day} 23 $tmp->saveAs($filenamepdf);//另存为 24 $url=word2pdf($filenamepdf,$pdf); 25 return config("PdfUrl").$fiel; 26 27 }
function word2pdf($srcfilename,$destfilename) { try { if(!file_exists($srcfilename)){ unlink($srcfilename); } $word = new \COM("word.application") or die("Can't start Word!"); $word->Visible=0; $word->Documents->Open($srcfilename, false, false, false, "1", "1", true); $word->ActiveDocument->final = false; $word->ActiveDocument->Saved = true; $word->ActiveDocument->ExportAsFixedFormat( $destfilename, 17, // wdExportFormatPDF false, // open file after export 0, // wdExportOptimizeForPrint 3, // wdExportFromTo 1, // begin page 5000, // end page 7, // wdExportDocumentWithMarkup true, // IncludeDocProps true, // KeepIRM 1 // WdExportCreateBookmarks ); $word->ActiveDocument->Close(); $word->Quit(); } catch (\Exception $e) { if (method_exists($word, "Quit")){ $word->Quit(); } return; } }
标签:tmp,setValue,word,phpword,tp5,date,php,com 来源: https://www.cnblogs.com/wrld/p/11704389.html