一、首先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