ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

tp5 使用phpword 替换word模板

2019-10-19 16:53:48  阅读:967  来源: 互联网

标签:tmp setValue word phpword tp5 date php com


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有