欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于office转换pdf完美终极解决方案

程序员文章站 2022-06-03 09:10:54
...
     最近项目上面有个需求,将用户上传的office格式转换成pdf格式。下面记录下我走过的一些弯路,和得到的一些收获
     1 使用java第三方api转换。
     这个是我最开始的想法,因为java毕竟比较熟悉,学习成本,维护成本相对较低。这个方案找过很多第三方,例如poi之类的,但是有两个缺点,1 性能低,对cpu压力大,2 兼容性差,很多格式或者特殊字符解析不出。
     2 使用openOffice
     openOffice也算是大名鼎鼎了,我使用的是另一个分支libreoffice。这个方案是在linux服务器上安装openOffice然后通过openOffice命令来转换pdf。
     性能问题基本解决,但是兼容性还是太差,特别是windowsOffice很多特有 格式无法读取或者乱码,而且需要安装微软中文字体还有可能涉及到侵权。
     3使用微软提供的com组件实现
     微软提供一个叫做SaveAsPDFandXPS的com组建来实现office转换成pdf。
     java通过jacob来调用com组件
     具体实现
     1 如果是web工程的话在jdk的bin目录下放置jacob-1.14.3-x64.dll
     2 需要一台windows服务器,将该功能单独部署
     3 这台windows服务需要安装office 和SaveAsPDFandXPS
     方案优点, 解决性能问题,完美解决兼容性问题。
     方案缺点, 需将转换服务单独部署,成为独立服务。需要windows服务器。需要实现linux系统和windows系统共享文件。这里感谢运维人员提供支持,通过磁盘挂载的方式实现共享文件。
    
关于office转换pdf完美终极解决方案
            
    
    博客分类: web officejavawebpdflinux 
     实现流程为:
    用户上传文件到web,web项目将用户上传的文件保存到文档服务器,然后调用部署在windows上的远程服务同时传递文件路径,该远程服务根据路径查找文档服务器上的文件并转换,然会返回相应的结果。
    稍微注意就是,看业务需求是同步转换还是异步转换,同步采用rpc机制调用远程服务,异步采用mq消息队列机制来实现远程服务调用。mq好处在于,可以最大化提升性能,因为可以通过队列来按顺序转换对应文件。

    
        

  • 关于office转换pdf完美终极解决方案
            
    
    博客分类: web officejavawebpdflinux 
  • 大小: 9.6 KB