本人技术小白一枚,前些天老大让我写一个office在线预览的一个功能,跟百度网盘类似,各种找资料,总结一下我觉得比较好用的方法。
网上大概有这几种office在线预览的方法。
# 第一种
利用office online实现在线预览,Office平台提供了通过url的指向达到预览效果。
http://view.officeapps.live.com/op/view.aspx?src=
后面的src填写文档上传到服务器的地址,地址需要通过用URLEncode进行编译。
例:
http://view.officeapps.live.com/op/view.aspx?src=http%3a%2f%2fvideo.ch9.ms%2fbuild%2f2011%2fslides%2fTOOL-532T_Sutter.pptx
参照链接:
https://blog.csdn.net/csdn_cjgu/article/details/69389474
优点:这个功能由Office提供所以只需要拼接地址。
缺点:文档的访问地址不能直接使用 ip,需要通过域名访问,并且端口必须是 80 端口,Word、ppt文档的大小不能超过10M,Excel不能超过5M
# 第二种
1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件,
2.通过swfTools将pdf文件转换成swf格式的文件;
3.通过FlexPaper文档组件在页面上进行展示。
参照链接:
https://blog.csdn.net/tmac937436/article/details/70799687?locationNum=14&fps=1
总结一下这种方法的利弊
优点:openoffice有各种版本,支持跨平台,转换速度快;
缺点:转换的样式会有缺损,Excel和openoffice完美不兼容 = . = ,转换的时候会出现折行,切分等情况,效果很不理想;
FlexPaper这个是用Flash插件显示的,展示的效果优点low。
# 第三种
利用poi实现office在线预览
public static void PoiWord07ToHtml (HttpServletRequest request) throws IOException{String path= "C:\\Users\\Administrator\\Desktop\\";String file = "C:\\Users\\Administrator\\Desktop\\word07.docx";String file2 ="C:\\Users\\Administrator\\Desktop\\word07.html";File f = new File(file);if (!f.exists()) {System.out.println("Sorry File does not Exists!");} else {if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {//读取文档内容InputStream in = new FileInputStream(f);XWPFDocument document = new XWPFDocument(in);File imageFolderFile = new File(path);//加载html页面时图片路径XHTMLOptions options = XHTMLOptions.create().URIResolver( new BasicURIResolver("./"));//图片保存文件夹路径options.setExtractor(new FileImageExtractor(imageFolderFile));OutputStream out = new FileOutputStream(new File(file2));XHTMLConverter.getInstance().convert(document, out, options);out.close();} else {System.out.println("Enter only MS Office 2007+ files");}}}
总结一下这种方法的利弊
优点:纯java代码不需要第三方软件,poi对于Excel的解析比较好,可以完美转换。
缺点:jar包真的好难找啊,各种版本不兼容问题,比如word03和word07生成的分别是.doc和docx,poi对于.doc不识别,然后各种报错,由于生成的是Html所以它会把Word中的图片单独存放在一个文件下很占空间。
# 第四种
使用jacob实现office转换pdf达到预览功能。
pom文件中引用
<dependency><groupId>net.sf.jacob-project</groupId><artifactId>jacob</artifactId><version>1.14.3</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14-beta1</version></dependency>
网上查找jacob对应版本包把jacob-1.14.3-x64.dll复制到需要在Java\jdk1.8.0\jre\bin目录下,
经过多次测试发现jacob对于Excel的转换有些问题,所以Excel的转换我用的是poi。
自定义一个工具类Word2Pdf

本文介绍了四种实现Office在线预览的方法,包括利用Office Online、OpenOffice转换、Apache POI和Jacob。每种方法都有其优缺点,如Office Online受限于域名和文件大小,OpenOffice转换可能导致样式丢失,POI对Excel解析较好但存在兼容性问题,而Jacob转换效率较低且仅支持Windows。
最低0.47元/天 解锁文章
1117

被折叠的 条评论
为什么被折叠?



