MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
原创
PHP+python实现word转html并自动上传图片的功能
2020-11-06
45.47w热度
word转html 并将word中的图片上传到服务器,这个功能其实不怎么复杂。但是纯PHP好像实现不了,多数都是只能导入文字,儿丢失了图片。 这里我将我的办法分享给大家。 > 用到的框架: 1:tp6.0 2:PHPquerylist 3:python 4:库安装 pip install pydocx 5:库官方文档: https://pydocx.readthedocs.io/en/latest/installation.html#install-using-pip 主体代码: 实现了上传 + 调用python + base64图片转换并上传 + 返回给前端 ``` public function uploadword(){ try { $file = request()->file("file"); // 上传到本地服务器 $savename = \think\facade\Filesystem::disk('upload')->putFile( 'word', $file); $shotrname = time().".txt"; // 短名称 $savename = "/www/wwwroot/micuer.com/data/upload/".$savename; //Request::domain(). $python_file_name = "/www/wwwroot/micuer.com/pythoncode/WordToHtml.py"; //组装命令 $cmd = "python {$python_file_name} ".$savename." {$shotrname} 2>error.txt 2>&1"; $res = exec($cmd,$array, $ret); $str = $array[0]; $pa = '%<body(.*?)</body>%si'; $str = preg_match($pa,$str,$matches); //将base64 图片保存到本地 $html = $matches[0]; $ql = QueryList::html($html); $data2 = $ql->find('img')->attrs('src'); $imgs = $data2->all(); foreach ($imgs as $k => $v){ //$str = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUxxxxxxxxx'; //base64 图片只需要 data:image/png;base64, 后面的内容 $temp = substr($v,strpos($v,",") + 1); //base64 图片串 $dir = "./public/wordToHtmlImg/".date("Ymd").'/'; if(!is_dir($dir)){ mkdir($dir); } $name =$dir.uniqid('micuer',true).".png"; file_put_contents($name,base64_decode($temp)); $pix = substr($v,0,strpos($v,",") +1 ); //base64 图片串 前面的data:image/png;base64, $str = $pix.$temp; // 组合原来的base64的串 //$name = './dsadasdadasdsa.png' 返回给前端组合成 $name = '/dsdadadas.png' $name = str_replace("./","/",$name); //base64 图片串 $matches[0] = str_replace($str,$name,$matches[0]); } return json(["code"=>200,"msg"=>"成功","data"=>$savename,"cmd"=>$cmd,"array"=>$matches]); } catch (think\exception\ValidateException $e) { return json(["code"=>40000,"msg"=>$e->getMessage()]); } } ``` python文件代码:2.7 3 都可用 ``` #!/usr/bin/python # -*- coding: UTF-8 -*- import sys from pydocx import PyDocX reload(sys) sys.setdefaultencoding('utf8') FileName = sys.argv[1] #获取文件名参数 ShortName = sys.argv[2] #获取文件名参数 html = PyDocX.to_html(FileName) # f = open("/www/wwwroot/micuer.com/pythoncode/runtime/99.txt", 'w') #服务器的全路径 # f.write(html) # f.close() print(html) ``` 讲一下实现思路及难点: 1:PHP调用python脚本 部分人可能出现问题 2:从python返回的str中获取base64图片流及处理 3:其他编码能力低下导致的错误问题 再获取base64的流我用正则失败了,所以改用的PHPquerylist获取,大家自己正则写的好的可以留言 本文由米醋儿网原创分享,转载请注明出处。否则维权到底
注:原创不易,转载请注明出处(
https://micuu.com/new/1001.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-06-08
上一篇:
观看电影月半爱丽丝观后感
下一篇:
关于博主
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>