PHP将word文件转为图片预览
开发中遇到一个需求,需要在线预览word文件,在网上找到的解决方案有几种,在些做一下归类。
一、在线调用API接口直接预览
1. 微软的接口
https://view.officeapps.live.com/op/embed.aspx?src=你的文档地址
可以是word,excel等office文档,直接用iframe显示即可。适用于可公开的文件。
2. I DOC view
和微软的接口性质是一样的,具体可参照示例:
示例 - I Doc View在线文档预览
二、PhpOffice将word转换为html然后预览
GitHub - PHPOffice/PHPWord: A pure PHP library for reading and writing word processing documents
以上为phpWord的Github地址,使用composer安装,然后就可以转换,不过目前遇到的问题是:
1. 不能分页: 转换后的代码是一整串,没有进行分页。不便预览。这一点非常不好。
2. 图片的处理:通过网上查询可以将图片上传,然后使用IMG标签显示出来。
三、将word转为pdf,然后将pdf转换为图片预览
通过目前查询的资料,word不能直接转换为图片,需要先将图片转换为pdf。然后将pdf转换为PNG图片。
1. 安装 imagemagick扩展(宝塔环境在扩展中直接安装即可)
2. 安装libreoffice扩展
yum install libreofficeyum install libreoffice-headlessyum -y install libreoffice-langpack-zh-Han*
安装完成libreoffice后,使用下面的代码来测试登上安装是否成功:
soffice --headless --invisible --convert-to pdf 1.docx
正常情况下,会在同目录下生成一个同名的PDF文件。
更多的使用方法可自行网上查询。
要在php中执行上面的代码,需要用到php的exec命令,这时候就需要解锁exec函数,宝塔在禁用函数中找到这个删除即可。其它的在php.ini中找到disable_functions里有一个exec函数去掉。
3.在php中word转pdf的方法 。
$result = exec("soffice --headless --invisible --convert-to pdf 1.docx");echo json_encode($result);
soffice --headless --convert-to 目标格式(如pdf) 转格式文件 --outdir 目标文件夹
4. 将pdf转换为图片
public function pdf(){$res = $this->pdf2png('./uploads/006.pdf','./uploads/pdf/');dump($res);}private function pdf2png($pdf, $path){if (!extension_loaded('imagick')) {return false;}if (!file_exists($pdf)) {return false;}$im = new \Imagick();$im->setResolution(120, 120); //设置分辨率 值越大分辨率越高$im->setCompressionQuality(100);$im->readImage($pdf);foreach ($im as $k => $v) {$v->setImageFormat('png');$fileName = $path . md5($k . time()) . '.png';if ($v->writeImage($fileName) == true) {$return[] = $fileName;}}return $return;}
在执行的时候会发现,有一个错误提示类似下面的:
centos FailedToExecuteCommand `'gs'
这个是因为没有安装ghostscript导致的,需要在服务器上安装ghostScript.
ghostScript下载地址:
Ghostscript : Downloads
点击下面的源码下载然,然后上传至自己的服务器上。
安装很简单如下执行即可:
# tar -xzvf ghostscript-9.27.tar.gz
# cd ghostscript-9.27
# ./configure
# make
# make install
安装完成以后执行下面的命令,查看是否安装正常:
# gs --version
至此就将word转换成了png图片。
PHP将word文件转为图片预览相关推荐
- PHP将word文件转为图片之二
0804记录安装php将Word转为pdf过程 一.安装宝塔 这一步就略过了 二.安装php相关扩展 Fileinfo Redis Mcrypt Imagemagick Exif 三.Linux安装需 ...
- 这篇文章教你把word文件转为图片
把word文件转为图片,一下子是没法转成的,需要先转成pdf,再转成图片,就可以达到目的,话不多说,直接上代码 //先将word转成pdf并放在字节数组流里面FileInputStream fileI ...
- php怎么在线预览word文件?php预览.doc、.docx、.wps文件
php预览Word PHP要实现在线Word预览只需要3步 第一步: 准备一个文件地址,如下: http://usdoc.cn/vw/文件模板.docx 第二步 预览前置地址: http://vw.u ...
- js之上传文件多图片预览
多图片上传预览功能也是现在非常常用的 下面是html代码: <html xmlns="http://www.w3.org/1999/xhtml"><head> ...
- 微信小程序接收二进制流文件(图片预览,文件打开)
下面通过downloadOaFile接口获取到二进制流,即res.data 注意!!!直接用downloadOaFile获取的二进制流文件在写入时会导致文件损坏,必须在uni.request对象的属性 ...
- axios获取图片显示_Vue.js+axios图片预览以及上传显示进度
在平时项目开发中,我们经常会对文件做一些上传操作,不仅仅要实现基本需求,也要兼顾用户体验,根据自己在工作中遇到的问题谈谈对图片上传的预览以及上传进度的优化. 1.搭建项目 基于Vue.js+axios ...
- vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt)
需求 最近在做vue2.0+element UI的项目中遇到了一个需求:需求是多个文件上传的同时实现文件的在线预览功能.需求图如下: 看到这个需求的时候,小栗脑袋一炸.并不知道该如何下手,之前的实践项 ...
- 原生js实现ajax的文件异步提交功能、图片预览功能.实例
采用html5使得选择图片改变时,预览框中图片随之改变.input文件选择框美化.原生js完成文件异步提交 效果图: 代码如下,可直接复制并保存为html文件打开查看效果 <html> & ...
- java图片预览上传_java实现文件上传、下载、图片预览
这篇文章主要介绍了java实现文件上传.下载.图片预览,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 多文件保存到本地: @ResponseBody ...
最新文章
- android 创建 file 文件,文本 并写入内容
- .net 下直接读分区数据,并生成ISO光盘镜像文件,含DEMO
- win10下怎么安装使用bash shell
- 一文说说这十多年来计算机玩摄影的历史
- 《爱上统计学》读书笔记
- iTerm2 保存日志
- git push 提交时显示 Empty reply from server的解决办法
- mysql是一个_Mysql
- MVC3中输出Html标签的方法
- NextJS基础教程
- nvidia控制面板一直闪退如何解决?
- Overlay network
- linux更新war包操作步骤,关于Linux系统下基于Tomcat部署和升级war包的详细过程
- 常见的国外主机提供商小结
- C++ 16进制日志输出 每行右侧ASII输出
- 程序员面试简历注意事项
- STM32三菱FX1N,FX2N,FX3U,PLC方案 可以直接上传下载梯形图,在线监控,具有称重功能,数码管功能,可以做到10路模拟量
- BW的登录错误解决实例
- java动态代理实现与原理详细分析
- 权限管理——用户认证和用户授权