Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录)
本文代码来源已在末尾标注,写本文的目的在于记录自己在实践过程中遇到的问题及解决方案
需求
实现文档在线预览
原理
1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件
2.通过swfTools将pdf文件转换成swf格式的文件
3.通过FlexPaper文档组件在页面上进行展示
安装包下载
1.openoffice是Apache下的一个开放免费的文字处理软件
下载地址:Apache Open Office 4.x
2.SWFTools是一组用来处理Flash的swf文件的工具包,我们使用它将pdf文件转成swf文件!
下载地址:SWFTools官网下载 swftools-2013-04-09-1007.exe
3.FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件
下载地址:FlexPaper官网下载
工具安装
安装过程中,出现了点问题,我习惯将软件装在D:\Program Files (x86)或者D:\Program Files下,结果就是在这里出了问题
安装openoffice,安装路径自定义,没有问题,安装完成后需要将服务打开,从cmd进入到openoffice 的安装盘符,用下面的命令启动服务
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

 


安装swftools,第一安装路径:D:\Program Files (x86)\SWFTools,安装完成,项目中有个swftools的路径,更改成安装路径,如下

 


结果运行项目时,报错如下,说找不到这个文件

 

 


断点调试后发现,程序中用到了swftools的安装路径,而路径中带有空格,按照空格符拆分字符串后,得到的路径时“D:\Program”,而不是”D:\Program Files (x86)\SWFTools”,于是问题转化为了怎么去去掉空格,避免这里拆分字符串后分离这个路径

 



两种解决方案
1、 用另外的方法表示这个路径,使路径中不带有空格,这种想法又有两种实现,一种是缩写,另一种是镜像,亲自试验了一下两种都失败了,但是这里还是列出来,毕竟涨了一下姿势
用缩写。比如c:\Program Files缩写为c:\Progra~1,再来刨根问底查查这个命名是否有规则,于是找到:
采用8个字符缩写,即写头六个字母(略去空白),另加波浪号和1,首字母不足六个字母,略去空白,用了第二个词的字母,凑成六个。例如:
"Documents and Settings“ -- DOCUME~1
"Local Settings" -- LOCALS~1 (注意略去空白,用了第二个词的字母,凑成六个,再加波浪号和1)。
如果多个文件前6字符一样怎么办?为什么最后是1而不是0或者其他数字呢?看看这个例子
假设下面是你的C盘根目录中的文件夹:
Program Files
Progra file
Progra zhang
则三个目录分别表示为:C:\Progra~1; C:\Progra~2; C:\Progra~3;

创建一个镜像。例如在CMD中输入 subst w: "C:\Documents and Settings"。然后就可以直接用w:\替代C:\D,ocuments and Settings了
失败的原因,我的D盘没有找到缩写,用dir /x可以查看,结果C盘下有对应的缩写,D盘没有,很悲剧;用镜像失败是创建的镜像在重启电脑后会消失

2、 重新安装swftools到一个没有空格的路径下
不想用第二种方法的,但是没有别的办法了,只能重新安装,于是重装了一遍,,,重装之后,在代码里面改了安装路径,测试没有问题了

 


然而,故事到这里并没有结束,在大功告成之际,我打算记录下我的心路历程,为了恢复之前出错的效果,我把代码中的路径恢复到之前的状态,像这样

 


看到路径的末尾似乎掉了一个\\,于是加上,像这样

 


就是这点改动,本来以为会重现之前的报错,,,,居然,神奇的好了,,,
所以说,,,问题并不是空格,,,而是路径后面掉了双斜杠

 

 

最详细的文件在线预览(openoffice+swftools+flexpaper)
http://blog.csdn.net/zfw198787/article/details/48781357

Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)
http://blog.csdn.net/arthurdev/article/details/73322677


关于cmd中执行命令路径包含空格的解决办法
https://www.cnblogs.com/Onlyou/p/4357522.html
Windows下文件名或目录的简写
http://blog.csdn.net/u013991521/article/details/52491075

 

posted on 2017-11-22 20:18  elroye  阅读(1024)  评论(0编辑  收藏  举报