米
心情
所有
图集
登录
搜索
原创
PHP+python实现word转html并自动上传图片的功能
竹马成双
发布于:2020-11-06
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获取,大家自己正则写的好的可以留言 本文由米醋儿网原创分享,转载请注明出处。否则维权到底
注:原创不易,转载请注明出处(
http://www.micuu.com/new/1001.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-06-08
上一篇:
观看电影月半爱丽丝观后感
下一篇:
关于博主
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>