php 实现 word 转为 图片

项目需求是这样的:用户签订合同,并读取用户信息生成合同,将合同保存为png图片保存

环境:windows(2012,linux要配置java环境,偷懒)+ apache(2.4.48) + php(7.1) + mysql(5.5.62)

框架:tp5.0.24,网站目录在public下面,环境直接用宝塔塔建的,phpenv 本地测试了也可以,其他的没有测试

第一步:向word写入用户信息

1. 将 PhpOffice 整个文件夹复制到 extend 文件夹下(如下图)


2. 接下来就是代码了,直接上:

    // 文字写入world
    public function word_write()
    {
   
   
        import('PhpOffice\PhpWord\TemplateProcessor', '.php');

        // 1.创建模板对象
        $temp_path = $_SERVER['DOCUMENT_ROOT'] . '/xieyi_fuwu_copy.docx';   // 模板文件路径
        $document = new \PhpOffice\PhpWord\TemplateProcessor($temp_path);

        // 2.插入数据 : word中的变量 ${name} ${idcard} ${phone} {$time}
        $data = [
            ['key' => 'name', 'value' => '小度哇'],
            ['key' => 'idcard', 'value' => '341022188810222345'],
            ['key' => 'phone', 'value' => '18888888888'],
            ['key' => 'time', 'value' => date('Y年m月d日')],
        ];
        foreach ($data as $k => $v) {
   
   
            $document->setValue($v['key'], $v['value']);
        }

        // 3.保存文件
        $file_path = $_SERVER['DOCUMENT_ROOT'] . '/file/' . date('Ymd');
        if (!file_exists($file_path)) {
   
   
            mkdir($file_path, '0777');
        }
        $document->saveAs($file_path.'/'.time().'.docx');
    }

第二步:world 转为 pdf

  1. 修改php.ini
    添加:extension=php_com_dotnet.dll
    去除注释:com.allow_dcom = true
    重启php环境

  2. 安装office,一定要安装office,(office 2007 需要手动安装 Microsoft Save as PDF and XPS)【https://files-cdn.cnblogs.com/files/XiaoMingBlingBling/SaveAsPDFandXPS.rar】

  3. 配置office组件服务:win+R打开运行菜单,输入dcomcnfg
    找到 [组件服务] — [计算机]— [我的电脑] — [DCOM配置] — [Microsoft Wrord 97-2003文档]
    右键 [Microsoft Wrord 97-2003文档] 设置属性 [标识] 为 [交互式用户]

  4. 可以写代码了

	// world 转为 pdf
    function index3()
    {
   
   
        $filenamedoc = $_SERVER['DOCUMENT_ROOT'] . '/xieyi_fuwu_copy.docx';	// word 文件地址
        $filenamepdf = $_SERVER['DOCUMENT_ROOT'] . '/xieyi_fuwu_copy.pdf';		// 生成的 PDF 文件保存地址

        if (!file_exists($filenamedoc )) {
   
   
            return 'word原文件不存在';
        }

        // 删除已有同名文件
        if (file_exists($filenamepdf)) {
   
   
            unlink($filenamepdf);
        }

        // 执行转换操作
        $word = new \COM("word.Application") or die("Could not initialise Object");
        $word->Documents->Open($filenamedoc);
        $word->ActiveDocument->ExportAsFixedFormat($filenamepdf, 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);
        $word->Quit(false);
        unset($word);

        return '转换成功';
    }

第三步:PDF 转为图片

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值