JACOB - a JAVA-COM Bridge

来源:互联网 发布:淘宝宝贝手机链接 编辑:程序博客网 时间:2024/05/17 01:16

今天浏览CSDN论坛,无意中看到了一篇关于JACOB的帖子
名为:用java 将doc转换成html文件...
http://community.csdn.net/Expert/TopicView1.asp?id=5497442

接着就看了一下有关JACOB的网站,该项目现在已经在sourceforge.net上发布.
http://sourceforge.net/projects/jacob-project/

JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries.  

虽然目前项目中还用不到,但是知道一下也是好的.以后用到的时候不用再费尽心思满Google找了,呵呵.

标记一下.

下面还有一部分JACOB应用的实例和注意,来自http://shuxudong.blog.hexun.com/7591618_d.html

 

将doc文件发布以后可能要在页面上浏览,那么在浏览的时候页面上肯定要加载相应的浏览工具,如:autvue这样在客户端就必须安装相应的浏览工具。如果将doc问及文件转换成html文件就省去很多功夫。

上面是些如下内容的目的,希望你也清楚。

 

/**
  * 
@author sxd1
  * 
@param paths
  * 
@param savepaths
  * 
@see 完成从word文档向HTML的转换
  
*/
 
public static void change(String paths, String savepaths) {
  File[] lists 
= getFileList(paths);
  String pathss 
= new String("");
  
// 对当前目录下面所有文件进行检索
  for (int i = 0; i < lists.length; i++) {
   
if (lists[i].isFile()) {
    String filename 
= lists[i].getName();
    
// 判断是否为doc文件
    if (filename.endsWith("doc")) {
     ActiveXComponent app 
= new ActiveXComponent(
       
"Word.Application");// Excel.Application
     
// 启动word
     String docpath = paths + filename;
     String htmlpath 
= savepaths
       
+ filename.substring(0, (filename.length() - 4));
     String inFile 
= docpath;
     
// 要转换的word文件
     String tpFile = htmlpath;
     
// HTML文件
     boolean flag = false;
     
try {
      app.setProperty(
"Visible"new Variant(false));
      
// 设置word不可见
      Object docs = app.getProperty("Documents").toDispatch();
      Object doc 
= Dispatch.invoke((Dispatch) docs, "Open",
        Dispatch.Method, 
new Object[] { inFile },
        
new int[1]).toDispatch();
      
// 打开word文件
      Dispatch.invoke((Dispatch) doc, "SaveAs",
        Dispatch.Method, 
new Object[] { tpFile,
          
new Variant(8) }, new int[1]);
      
// 作为html格式保存到临时文件
      Variant f = new Variant(false);
      Dispatch.invoke((Dispatch) doc, 
"Close",
        Dispatch.Method, 
new Object[] { new Variant(
          
false) }, new int[1]);
      flag 
= true;
     } 
catch (Exception e) {
      e.printStackTrace();
     } 
finally {
      app.invoke(
"Quit"new Variant[] {});
     }
     System.out.println(
"转化完毕!");
    }
   } 
else {
    pathss 
= paths;
    
// 进入下一级目录
    pathss = pathss + lists[i].getName() + "/";
    
// 递归遍历所有目录
    change(pathss, savepaths);
   }
  }
 }

上面的代码是程序的主体。

/**
  * 
@author sxd1
  * 
@param dirName
  * 
@return string[]
  * 
@see 得到给定目录下面的所有文件名称,并存放到string[]中
  
*/
 
private static File[] getFileList(String dirName) {
  File[] fileList 
= null;
  File dir 
= new File(dirName);
  
if (dir.isDirectory())
   fileList 
= dir.listFiles();
  
return fileList;
 }

这里需要注意的是:程序是用jadoc包完成的。在写程序之前需要完成下面的工作。因为JDK里面没有这个包。

1,下载jadoc.jar包,可以访问:http://danadler.com/jacob/,找Version1.7

2,需要注意的是Version1.7中包括jadoc.jar和jadoc.dll两个文件但是在这里只能用jadoc.jar,jardoc.dll需要重新下载。下载地址:http://tech.groups.yahoo.com/group/jacob-project/点“files”(当然你必须事先注册并登陆并加入组,才能进入)找就jacod_jer142fix_bin.zip并下载。

3,将下载的jacod.jar拷贝到jdk的/jre/lib/ext下面如:C:/jdk1.5.0_01/jre/lib/ext

4,将下载的jacod.dll拷贝到jdk的jre/bin下面如:C:/jdk1.5.0_01/jre/bin

然后就可以运行了,祝成功!

原创粉丝点击