我苹果手机微信里的如何找到以前word文档档以前是可以直接打开显示内容,现在打开是

8421人阅读
微信(11)
移动开发(12)
openOffice(1)
微信企业号(10)
&&&& 最近开发微信企业号,发现微信andriod版内置浏览器在打开文件方面有问题,但是ios版没有问题,原因是ios版使用的是safari浏览器 支持文档直接打开,但是andriod版使用的是腾讯浏览器x5内核,不知道什么原因不支持,可能是集成出现的问题,这里提供解决方法,这种方法也同样适用手机浏览器或者安卓开发。通过此方法可以在微信上开发自己的第三方应用,或者解决自己的项目问题,解决方法及核心代码如下:
&&&& 1、判断浏览器类型
&&&&&&&&& HttpServletRequest req = ServletActionContext.getRequest();
&&&&&&&&& String userAgent=req.getHeader(&User-Agent&);//里面包含了设备类型
&&&&2、IOS版直接使用流输出
&&&&&&&&&Andriod版利用openoffice+jod转换成html,然后对html内容重新编辑,文件中有图片的将路径改为网络路径或者采用流输出(改成网络路径注意特殊符号,如+号会变成空格)
* 从OA上抓取文件
* company 海颐软件股份有限公司
客服产品中心/于洋
public String getFileFromOa(){
HttpServletRequest req = ServletActionContext.getRequest();
String userAgent=req.getHeader(&User-Agent&);//里面包含了设备类型
if(-1!=userAgent.indexOf(&iPhone&)){
//-----------------//
//此方法需要浏览器自己能够打开,ios可以但是微信andriod版内置浏览器不支持
//-----------------//
//如果是苹果手机
//获得文件地址
String fileUrl = ServletActionContext.getRequest().getParameter(&fileUrl&);
fileUrl.replaceAll(&%20&, &\\+&);//转换加号
String strURL = MessageUtil.oaUrl+fileU
String fileType=strURL.substring(strURL.lastIndexOf(&.&)+1,strURL.length());
//获得图片的数据流
URL oaUrl = new URL(strURL);
HttpURLConnection httpConn = (HttpURLConnection) oaUrl.openConnection();
InputStream in = httpConn.getInputStream();
//获取输出流
HttpServletResponse response = ServletActionContext.getResponse();
req.setCharacterEncoding(&UTF-8&);
response.setCharacterEncoding(&UTF-8&);
String name=fileUrl.substring(fileUrl.lastIndexOf(&/&)+1, fileUrl.length());
response.setHeader(&Content-Disposition&,
&filename=& +
new String( (name ).getBytes(),
&iso-8859-1&));
if(&doc&.equals(fileType)||&docx&.equals(fileType)){
response.setContentType(&application/msword&);
}else if(&xls&.equals(fileType)||&xlsx&.equals(fileType)){
response.setContentType(&application/msexcel&);
response.setContentType(&application/&+fileType);
OutputStream out = response.getOutputStream();
//输出图片信息
byte[] bytes = new byte[1024];
int cnt=0;
while ((cnt=in.read(bytes,0,bytes.length)) != -1) {
out.write(bytes, 0, cnt);
out.flush();
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
//如果非苹果手机,自己处理文档
//获得文件地址
String fileUrl = ServletActionContext.getRequest().getParameter(&fileUrl&);
fileUrl.replaceAll(&%2B&, &\\+&);//转换加号
String strURL = MessageUtil.oaUrl+fileU
//在本地存放OA文件,然后转换成html,再对文档中的图片路径进行修改,最后输出到页面
URL oaUrl = new URL(strURL);
HttpURLConnection httpConn = (HttpURLConnection) oaUrl.openConnection();
InputStream in = httpConn.getInputStream();
//获取输出流
HttpServletResponse response = ServletActionContext.getResponse();
req.setCharacterEncoding(&UTF-8&);
response.setCharacterEncoding(&UTF-8&);
String name=fileUrl.substring(fileUrl.lastIndexOf(&/&)+1, fileUrl.length());
//首先判断本地是否存在
String path=req.getRealPath(&&);
path=path.substring(0, path.lastIndexOf(&\\&)+1);
File htmlFile=new File(path +
&OaFileToHtml\\&+name+&.html&);
if(!htmlFile.exists()){
//判断文件夹是否存在,创建文件夹
String oaFilePath=path + &OaFile&;//存放OA文档的文件夹路径;
File oaFiles=new File(oaFilePath);
if(!oaFiles.exists()){
//如果文件夹不存在创建文件夹
oaFiles.mkdirs();
//将OA消息存入本地
File oafile=new File(oaFiles+ File.separator +name);
OutputStream out = new FileOutputStream(oafile);
//输出图片信息
byte[] bytes = new byte[1024];
int cnt=0;
while ((cnt=in.read(bytes,0,bytes.length)) != -1) {
out.write(bytes, 0, cnt);
out.flush();
out.close();
in.close();
//转换成html
String htmlFilePath =path + &OaFileToHtml&;//OA文件转成html的位置
String htmlcontext=ConvertFileToHtml.toHtmlString(oafile, htmlFilePath);
req.setAttribute(&htmlcontext&, htmlcontext);
//已经存在转换成功的文档
StringBuffer htmlSb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile),Charset.forName(&gb2312&)));
while (br.ready()) {
htmlSb.append(br.readLine());
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// HTML文件字符串
String htmlStr = htmlSb.toString();
//System.out.println(&htmlStr=& + htmlStr);
// 返回经过清洁的html文本
req.setAttribute(&htmlcontext&, ConvertFileToHtml.clearFormat(htmlStr, &&));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return &lookfile&;
-------------------将word转换成html文件,并读取内容-------------------------
此类借鉴原地址并修改
package com.haiyisoft.wx.
import java.io.BufferedR
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.IOE
import java.io.InputStreamR
import java.net.ConnectE
import java.nio.charset.C
import java.util.regex.M
import java.util.regex.P
import com.artofsolving.jodconverter.DocumentC
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeC
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeC
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentC
* * 端口启动命令:
 * soffice -headless -accept=&socket,port=8100;
* company 海颐软件股份有限公司
客服产品中心/于洋
public class ConvertFileToHtml {
* 将word文档转换成html文档
* @param docFile
需要转换的word文档
* @param filepath
转换之后html的存放路径
* @return 转换之后的html文件
public static File convert(File docFile, String filepath) {
// 创建保存html的文件
String fileName=docFile.getName();
File htmlFile = new File(filepath + &/& + fileName + &.html&);
// 创建Openoffice连接
OpenOfficeConnection con = new SocketOpenOfficeConnection(8100);
con.connect();
} catch (ConnectException e) {
System.out.println(&获取OpenOffice连接失败...&);
e.printStackTrace();
// 创建转换器
DocumentConverter converter = new OpenOfficeDocumentConverter(con);
// 转换文档问html
converter.convert(docFile, htmlFile);
// 关闭openoffice连接
con.disconnect();
return htmlF
* 将word转换成html文件,并且获取html文件代码。
* @param docFile
需要转换的文档
* @param filepath
文档中图片的保存位置
* @return 转换成功的html代码
public static String toHtmlString(File docFile, String filepath) {
// 转换word文档
File htmlFile = convert(docFile, filepath);
System.out.println(htmlFile.getAbsolutePath());
// 获取html文件流
StringBuffer htmlSb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile),Charset.forName(&gb2312&)));
while (br.ready()) {
htmlSb.append(br.readLine());
br.close();
// 删除临时文件
//htmlFile.delete();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// HTML文件字符串
String htmlStr = htmlSb.toString();
//System.out.println(&htmlStr=& + htmlStr);
// 返回经过清洁的html文本
return clearFormat(htmlStr, filepath);
* 清除一些不需要的html标记
public static String clearFormat(String htmlStr, String docImgPath) {
// 获取body内容的正则
String bodyReg = &&BODY .*&/BODY&&;
Pattern bodyPattern = pile(bodyReg);
Matcher bodyMatcher = bodyPattern.matcher(htmlStr);
if (bodyMatcher.find()) {
// 获取BODY内容,并转化BODY标签为DIV
htmlStr = bodyMatcher.group().replaceFirst(&&BODY&, &&DIV&).replaceAll(&&/BODY&&, &&/DIV&&);
// 调整图片地址,这里将图片路径改为网络路径
htmlStr = htmlStr.replaceAll(&&IMG SRC=\&../&,&&IMG SRC=\&& + MessageUtil.webUrl+&/******.do?action=***);
//特殊处理一下+号,因为网络传输+会变成空格,用%2B替换+号
String temp1=htmlStr.substring(htmlStr.indexOf(&action=***&), htmlStr.length());
String temp2=temp1.substring(0,temp1.indexOf(&.&));
String temp3=temp2.replaceAll(&\\+&, &%2B&);
htmlStr=htmlStr.substring(0,htmlStr.indexOf(&action=***&))+temp3+temp1.substring(temp1.indexOf(&.&), temp1.length());
// 把&P&&/P&转换成&/div&&/div&保留样式
// content = content.replaceAll(&(&P)([^&]*&.*?)(&\\/P&)&,
// &&div$2&/div&&);
// 把&P&&/P&转换成&/div&&/div&并删除样式
htmlStr = htmlStr.replaceAll(&(&P)([^&]*)(&.*?)(&\\/P&)&, &&p$3&/p&&);
// 删除不需要的标签
htmlStr = htmlStr.replaceAll(&&[/]?(font|FONT|span|SPAN|xml|XML|del|DEL|ins|INS|meta|META|[ovwxpOVWXP]:\\w+)[^&]*?&&,&&);
// 删除不需要的属性
htmlStr = htmlStr.replaceAll(&&([^&]*)(?:lang|LANG|class|CLASS|style|STYLE|size|SIZE|face|FACE|[ovwxpOVWXP]:\\w+)=(?:'[^']*'|\&\&[^\&\&]*\&\&|[^&]+)([^&]*)&&,&&$1$2&&);
return htmlS
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:346058次
积分:4848
积分:4848
排名:第4359名
原创:136篇
转载:17篇
评论:106条
(3)(7)(3)(1)(1)(1)(1)(5)(9)(5)(2)(2)(4)(6)(1)(2)(2)(1)(2)(1)(2)(2)(3)(3)(11)(5)(8)(3)(5)(4)(9)(5)(1)(4)(2)(4)(3)(1)(3)(4)(10)(4)为什么iOS下的微信内浏览器可以直接预览word文档单安卓平台不? - 爱问知识人
(window.slotbydup=window.slotbydup || []).push({
id: '2491531',
container: s,
size: '150,90',
display: 'inlay-fix'
可以直接预览word文档单安卓平台不行?还是说我设置有问题?
您的举报已经提交成功,我们将尽快处理,谢谢!
亲因为微信浏览器有支持打开word的功能
《赠人玫瑰手有余香,祝您好运一生一世,如果回答有用,请点“好评”,谢谢^_^!》
设置-通知里把,或者应该在微信设置里把显示详情关闭掉
去韩国整容。回来了就互通了
微信支持的最低版本是4.3,你的系统达不到要求当然是不能装了。唯一的办法是升级ios,可你之前两年多一直没有升级,最好用的4.33、5.11你都错过了,现在要想...
word文件的内容转成微信,有一个笨点的方法:先做成长微博,再进行复制,然后在微信内拷贝、发送即可。有用给好评 谢谢。
大家还关注八月工资献给了中秋,九月工资献给了国庆,十月工资献给了双十一。
人们的忽视并不影响苹果对电视的重视,客厅对于它的生态系统同样重要。
当现今国产游戏用蹩脚的风格模仿和残缺的文化营造伤害玩家眼球时,还能有人无比强势地...
毕竟iPhone才是苹果的大头,拿下就直接起飞了。
这样,欧洲的老司机们就能够更加省心了。
还有接下来的圣诞季,有望达到“史上最佳”的高度。
号称全球最先进的无线耳机,不知道是不是真的这么好用呢?
在开发和维护这些应用时,苹果也会为这些应用准备调试(Debug)菜单。
《米奇跳跃》在画面上延续了该系列一贯的逗逼风格,不过在清晰度等具体细节方面,我们...
本周,著名游戏开发商tinyBuild在苹果商店中推出了其新作《疯狂派对GO(Party Hard Go...
经典游戏《卷饼野牛复仇记》于本周推出了该系列的续作《Burrito Bison: Launcha Libre...
如果想要体验一下当宇宙海盗那种紧张刺激的生活,游戏是一个不错的选择。本周,游戏开...
这款应用用本身丰富的内容向我们讲述了一个道理:每个孩子,都是独一无二的天使。
游戏的画风偏向华丽,并且会利用大量的粒子效果来突出特效的炫酷感。
游戏采用了清新的卡通风格的画面设计,看起来还是非常休闲的,与游戏的风格搭配的恰到...
号称全球最先进的无线耳机,不知道是不是真的这么好用呢?
简单的拱形和皮革,带来了不一样的味道~
这已经不是苹果第一次发布Product(RED) 版的产品了~
尽管带Touch Bar的MBP尚未发货,但配件已经到货了。
说到KEF,也许不少传统HIFI发烧友都会对这家三大同轴专利拥有者之一的老牌英国厂商有...
我们在这里要强调一下,苹果的 USB-C 配件降价可是限时的。
鉴于Lightning接口每年都能为苹果换来数亿美元的授权费,因此为MacBook Pro换装USB-C...
用一个小配件就让 12 英寸 New MacBook 和全新的 MacBook Pro 重新获得 MagSafe 特性...
微信收藏的word文档能保存到手机上吗
注册时间 最后登录
在线时间2 小时 UID
主题帖子人气
小苹果, 积分 13, 距离下一级还需 37 积分
朋友从微信发给我一个文档,能在微信里打开看,但无法像安卓系统那样选择第三方程序打开(如iReader)。是不是苹果系统就这样还是有什么办法解决?前提是不越狱
注册时间 最后登录
在线时间212 小时 UID
主题帖子人气
不清楚。帮顶。
注册时间 最后登录
在线时间336 小时 UID
主题帖子人气
你可以通过微信的qq好友功能、发到qq上回楼主evdhappyness于2 小时前发表的: 朋友从微信发给我一个文档,能在微信里打开看,但无法像安卓系统那样选择第三方程序打开(如iReader)。是不是苹果系统就这样还是有什么办法解决?前提是不越狱......
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 | 沪ICP备号-1
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!

我要回帖

更多关于 微信无法打开word文档 的文章

 

随机推荐