A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张荫 于 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, 下载次数: 178)

简介:
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
谢谢观看。

4 个回复

倒序浏览
我来占层楼啊   

点评

谢谢  发表于 2018-1-5 12:46
回复 使用道具 举报
pdf转word呢

点评

本篇并没有介绍到pdf如何转word 在之后的帖子中会介绍到哦  发表于 2018-1-6 19:04
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马