1. doc/docx
   (1)调用com组件,这种方式实现起来比较简单,使用jacob即可,见 http://danadler.com/jacob/,但其有以下局限性:
       *必须得运行在windows机器上
       *目前office提供的script功能有限,当word文档错误时,会弹出一些窗口
       *当多线程调用时,占用cpu很高,机器很容易down掉 最早解析word时,是采用的com,上线后没多久,因为不稳定,不可靠,就下线了
   (2)poi,见http://poi.apache.org,现在它对word的支持还很弱,用它来解析出txt还是可以的,转换为html就很难了
   (3)openoffice
    openoffice需要jre才能正常安装,所以首先需要安装jre,然后配置java的环境变量
    从http://zh.openoffice.org/new/zh_cn/downloads.html这里下载最新的rpm包
    

rpm -ivh *.rpm


    安装后,其服务默认是单进程但线程运行的,如果使用其默认的启动参数
    

soffice -headless "-accept=socket,host=localhost,port=18100;urp;StarOffice.ServiceManager" -nofirststartwizard &


       即使你启动多个进程,每个对应的port不同,最后soffice也只起了一个进程,但这个进程监听了多个端口,这样,其实还是单进程运行的 后来,参考了oooserver,见http://www.re.be/oooserver/index.xhtml,看了其源码后,发现启动时多加个参数,还是可以启动多个进程实例的
      

soffice -headless "-accept=socket,host=localhost,port=18100;urp;StarOffice.ServiceManager" -nofirststartwizard -env:UserInstallation=file:////tmp/ooo.1256104949540.8331950043461231013/ &


      多加了一个UserInstallation参数,该参数指定了安装目录,如果不加该参数,openoffice在启动时会检查是否已经存在了默认目录下对应的soffice的进程,如果存在,可能就不再启动新的实例了 多个进程起来后,需要自己实现一个process pool,控制协调各个进程,保证其同一个时刻只服务一个文档转换 目前,在服务器上起了5个进程,我们会根据日志情况,再来调整进程数目

2.xls
      之前也是只使用com组件,出现的问题同上
      现在,采用了poi + com来实现,先是用poi来解析,如果发现里面有嵌入组件、图片、图标等内容,则转交给com来出来,否则就由poi自己来解析
      使用poi的关键在于,自己要实现单元格合并的处理逻辑

3.pdf
     采用了xpdf工具,见http://www.foolabs.com/xpdf/,其能有效的处理中文,但现在只能parser出txt来