本帖最后由 张荫 于 2018-2-1 14:45 编辑  
 
大家在工作之后可能会遇到上传一个word文件然后要显示在html的页面当中的问题。那么有什么好得解决方案呢? 
我这里有2种解决方案: 
1.将word文件转换成html在页面中显示出来 
2.将word转换成pdf使用插件展示pdf文件。 
 
使用第一种方式有如下弊端,word中有图片,转换成为html之后,整个文档的格式由于有图片,或者表格可能发生会变化。 
使用word转pdf由于转换成pdf之后不管有没有图片或者表格对我们的格式都没有影响。 
所以我们使用第二种方式来实现。 
 
查阅了相关资料我决定选用jacob来实现将word转化成为pdf。jacob.jar的下载地址 如果这个地址不能使用请使用这个
 
jacob-1.18.zip
(472.78 KB, 下载次数: 238)
 
 
简介:  
jacob(java com bridge,java com桥)分为两个部分,jacob.jar,jacob.dll,使用时两个东西的版本要一致,而且还分32位和64位,它的位数和jdk的位数有关,与操作系统的位数无关。它的原理是通过java的jni功能,调用系统组件dll,通过这个com桥来操作com组件(windows的一种软件编程技术吧),最终完成对office文档的操作。  
使用前操作: 
   1、把dll文件放在%JAVA_HOME%\bin下(注意系统是32位还是64位),也可以放在C:\Windows\System32下,如果是64位应该放在C:\Windows\SysWOW64 下。建议放在jdk的bin目录下 
    2、如果是在eclipse下开发,需要重新引入jdk(Preference/Java/Installed JREs) 
    3、开发时将jacab.jar包放在项目lib下并add到liabraries中即可。 
 
 
使用jacob有如下几个要求。 
1.服务器要使用windows操作系统 
2.服务器需要安装office 最好是使用2000及以上版本 
3.不同的操作系统会存在不同方法的环境配置问题。 
下面说下我遇到的情况: 
解压后获得3个文件: 
jacob.jar 
jacob-1.18-x64.dll 
jacob-1.18-x86.dll 
 
jacob.jar 放到项目的lib目录 
 
win10:将jacob-1.18-x86.dll 放到C:\Windows\SysWOW64 
 
win7或win8: 
jacob-1.18-x64.dll 放到C:\Windows\System32 
jacob-1.18-x86.dll 放到C:\Windows\SysWOW64 
注: 
win7/win8就是这么设计的, System32放64位dll,SysWOW64放32位。 
还要注意的是,32位JDK只能加载32位DLL,64位JDK只能加载64位DLL,不能互相兼容。 
 
 
 
 
到这里我们就把jacob集成到我们的程序里了。 
下面就是去转化了: 
[Java] 纯文本查看 复制代码  /**
   * 
   * <p>Title: word2pdf</p>
   * <p>Description: 将word转换成pdf</p>
   * @param docfile word文件路径
   * @param pdffile pdf文件路径
   */
  public static void word2pdf(String docfile, String pdffile)       
  {       
      // 启动word应用程序(Microsoft Office Word 2003)    
      ActiveXComponent app = null;    
      try{  
          ComThread.InitSTA();  
          app = new ActiveXComponent("Word.Application");       
          app.setProperty("Visible", false);  
          System.out.println("*****正在转换...*****");    
          Dispatch docs = app.getProperty("Documents").toDispatch();      
          Dispatch doc = Dispatch.call(  
                  docs,       
                  "Open",  
                  docfile,  
                  false,  
                  true).toDispatch();       
          Dispatch.call(doc, "ExportAsFixedFormat", pdffile, WD2PDF);    
          // 关闭word文件    
          Dispatch.call(doc, "Close", false);   
      }       
      catch (Exception e)       
      {   ComThread.Release();    
          e.printStackTrace();      
      }       
      finally      
      {       
          //关闭word应用程序    
          app.invoke("Quit", 0);     
          ComThread.Release();  
      }     
      System.out.println("*****转换完毕********");    
  }   
以上就是如何将word转换为pdf 
谢谢观看。 
 |