JACOB - a JAVA-COM Bridge

今天浏览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

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



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1592453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值