jacob Word转html 解决图片无法显示

来源:互联网 发布:在线广告视频制作软件 编辑:程序博客网 时间:2024/05/21 06:30

查资料网上有很多博客里有教程里讲这个方法,教程中的代码基本雷同,不知是从国外那个网站流传进来被国内入门级玩家传播开来,使用过程中普遍都是只知其然不知所以然。随手找来一个操作,基本可以保证成功,例如这篇http://blog.csdn.net/liugenghao3048/article/details/8771673

我按着操作之后,基本能够成功转换,但是有一个问题,通过这种方法转出的html中图片是用v:shape标签包起来,而不是以img标签包起来,导致无法显示标签。搜了一下很多人说是路径不对,我点击v:shape中的路径却可以直接打开图片。按理说调用ActiveX转换的话,应该是和在word里面手动另存为转换的是一样的,我怀疑可能是另存为的选项不对导致的,于是我手动在word里面将可以转换的html格式一一转换,与代码转换的进行对比,word支持的html格式如下图红色框框的部分:



果然,发现代码转换的文件同上述红框中”网页(*.html;*.html)“的格式是一样的,而这种格式就是上述提到的无法正常显示图片的格式,最下面一个”筛选过的网页(*.html;*.html)“才是可以正常显示网页的。那么就需要修改另存为选项了。查阅微软的MSDN中关于ActiveX Document的API可以找到其支持的另存为格式与对应的参数,支持的格式见,这个地址是针对Office2007的msdn:http://msdn.microsoft.com/en-us/library/bb238158(v=office.12).aspx

其中wdFormatFilteredHTML 格式就对应上述图片中”筛选过的网页(*.html;*.html)“类型,其对应的值是10,那么修改广泛流传的jacob word转html教程中的对应的部分就可以成功显示了,不明白为什么那么多人号称使用教程都成功进行转换了,世界真奇妙。当然,运行代码之前需要将环境配置好,包括需要的dll和jar包的配置,以及安装MS Office。

import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import com.jacob.com.Variant;public class App {    public static void main( String[] args )    {wordToHtml("c:/test.doc","c:/test/jacob.html");    }    public static boolean wordToHtml (String inPath,String toPath) {     //启动word  ActiveXComponent axc = new ActiveXComponent("Word.Application");  boolean flag = false;  try {//后台执行,不显示word界面axc.setProperty("Visible",new Variant(false));       Dispatch docs = axc.getProperty("Documents").toDispatch();       //打开word文档  Dispatch doc = Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[]{inPath,new Variant(false), new Variant(true)},new int[1]).toDispatch();//作为html保存到文件  Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {toPath, new Variant(10) }, new int[1]); //这里的new Variant(10)中的初始化值是10,而不是8Variant f = new Variant(false);  Dispatch.call(doc, "Close", f);  flag = true;  return flag;      } catch (Exception e) {  e.printStackTrace();  return flag;  } finally{  axc.invoke("Quit", new Variant[] {});  }}}


0 0