FreeMarker通过xml结构生成Word文档,在移动端打开却显示的是xml文档,PC打开正常,而PC上使用Office或者Wps打开这个文档,另存为一个新的Word文档,在移动端打开就正常了。顺着这个思路,找到一个解决方案,使用JACOB - Java COM Bridge download,通过Java代码把FreeMarker生成文档另存为一个新的Word文档。然而Jacob目前只能在Windows平台使用,希望这个回答可以帮到部分朋友。
public static void main(String[] args) {
ActiveXComponent _app = new ActiveXComponent("Word.Application");
_app.setProperty("Visible", Variant.VT_FALSE);
Dispatch documents = _app.getProperty("Documents").toDispatch();
// 打开FreeMarker生成的Word文档
Dispatch doc = Dispatch.call(documents, "Open", "E:\\FreeMarkerXml.doc", Variant.VT_FALSE, Variant.VT_TRUE).toDispatch();
// 另存为新的Word文档
Dispatch.call(doc, "SaveAs", "E:\\NewDoc.doc", Variant.VT_FALSE, Variant.VT_TRUE);
Dispatch.call(doc, "Close", Variant.VT_FALSE);
_app.invoke("Quit", new Variant[] {});
ComThread.Release();
}
作者:张业龙
链接:https://www.zhihu.com/question/41442659/answer/122789898
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
移动端打开由FreeMarker模板生成的Word文档显示异常,仅显示文档结构,而在PC上打开正常。通过使用JACOB - Java COM Bridge,将生成的文档另存为新文件,可解决此问题。此方案目前限制于特定平台,适用于部分用户。
780

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



