项目中要用到在线预览word文档,刚开始考虑是要将word转成pdf文件,然后再直接在浏览器打开pdf文档即可,
但是项目部署在Linux下,在网上搜了一下没有找到合适的方法,
后来项目组讨论用POI生成HTML文件,但是生成的HTML文档是额外生成的,浏览器是无法直接访问POI生成的html文件的,
Not allowed to load local resource: file:///D:/images/word/media/image1.png
这个错误给整的明明白白的。
后来尝试
out=response.getOutputStream(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType( "text/html;charset=UTF-8" ); XHTMLConverter.getInstance().convert(document, out, options); out.flush(); out.close();
HTML文件倒是能在页面上显示,但是里面的图片还是显示不出来。404又给我整明白了,因为部署的项目里是没有这些图片的,完全一厢情愿。
没办法了,咨询项目大神,大神就是大神,脑袋都没拍就想到一个方法。
————————————————————
在springmvc-servlet.xml配置文件中
mvc:resources 是加载静态文件的
详见
https://www.cnblogs.com/linnuo/p/7699401.html
在项目中pringmvc-servlet.xml文件里加入
<mvc:resources mapping="/wordview/**" location="file:D:/POITransforms/" />
将html文件放在固定的D:/POITransforms/里,文件夹可以有子集文件夹,子文件夹名可以是自定义的UUID,
我这边点击预览按钮是弹窗里面嵌入了一个iframe , iframe src路径为:
Util.getPath()+‘/wordview/temp/5570c3fba83f464fa383e58cd394f860/transforms.html‘
另:_________________________________________________________________
//获取项目名称
getPath:function(){
return location.pathname.match(/\/(.+?)(?=\/)/g)[0];
}
temp/5570c3fba83f464fa383e58cd394f860/transforms.html 这一串是返回给前台的生成的HTML文件路径,是固定在D:/POITransforms/
这样一写齐活了,然后再删除D:/POITransforms/ 就可以了