此方案已上线使用超过半年了,运行良好。因为使用wps转pdf,所以预览看到的和wps打开看到的完全一样。有个问题是必须部署在windows服务器上。因为转换需要时间,建议将转换后pdf保存起来,下次预览时只需要直接打开此文件。
预览的效果

预览原理
把office文件转为pdf文件,然后再用pdf.js插件预览pdf文件。
软件环境
WPS:最新版(所以服务器必须为windows。原理:通过wps把office文件转成pdf,安装微软的office也可以)
jacob1.19:下载地址 https://udomain.dl.sourceforge.net/project/jacob-project/jacob-project/1.19/jacob-1.19.zip
pdf.js:最新版
必要操作
需要把jacob-1.19-x64.dll文件放到jre/bin目录下。如下图,tomcat启动时会打印出Java Home目录,放到这个目录的bin目录下即可。

参考代码
这里只随便贴一段,具体用法可自行搜索,网上有一大把。
/**
* excel转pdf
*/
public String wordToPDF(String src) {
ActiveXComponent app = null;
Dispatch doc = null;
try {
app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", new Variant(false));
app.setProperty("AutomationSecurity", new Variant(3));
Dispatch docs = app.getProperty("Documents").toDispatch();
doc = Dispatch.call(docs, "Open", new Object[] { src, Boolean.FALSE, Boolean.TRUE }).toDispatch();
String target = getTarget(src);
Dispatch.call(doc, "SaveAs", new Object[] { target, Integer.valueOf(17) });
return target;
} finally {
if (doc != null) {
try {
Dispatch.call(doc, "Close", new Object[] { Boolean.FALSE });
} catch (Throwable t) {
t.printStackTrace();
}
}
if (app != null) {
try {
app.invoke("Quit");
app.safeRelease();
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}错误解决
异常:om.jacob.com.ComFailException: Can't get object clsid from progid
解决方案:在服务-->tomcat-->登录:配置登录身份。如下图:

异常:运行一段时间后,突然无法预览附件了,系统无明确报错信息。
解决方案:结束掉wps进程再重新启动wps后,竟然解决问题了。