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

最近项目上面有个需求,将用户上传的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系统共享文件。这里感谢运维人员提供支持,通过磁盘挂载的方式实现共享文件。

[img]http://dl2.iteye.com/upload/attachment/0115/7303/f76d40ee-a93a-34db-bfab-ac441fc739ce.png[/img]
实现流程为:
用户上传文件到web,web项目将用户上传的文件保存到文档服务器,然后调用部署在windows上的远程服务同时传递文件路径,该远程服务根据路径查找文档服务器上的文件并转换,然会返回相应的结果。
稍微注意就是,看业务需求是同步转换还是异步转换,同步采用rpc机制调用远程服务,异步采用mq消息队列机制来实现远程服务调用。mq好处在于,可以最大化提升性能,因为可以通过队列来按顺序转换对应文件。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中的Word文档转换PDF格式,可以通过使用各种开源库和工具来实现。以下是一个可能的解决方案: 1. Apache POI:Apache POI是一个用于读取和写入Microsoft Office格式文件的Java库。使用Apache POI可以读取Word文档的内容,并将其内容逐个写入PDF文件。 2. iText库:iText是一个功能强大的开源库,可用于创建和操作PDF文档。可以使用iText将Java中的Word文档转换PDF,它提供了许多处理PDF文件的功能,如添加文本、图像、表格等。 3. 使用Microsoft Office并调用COM接口:如果您的Java应用程序运行在Windows操作系统上,并且安装了Microsoft Office,您可以通过调用OfficeCOM接口来实现将Word文档转换PDF文件。这种方法需要您具备一定的COM编程知识,并且可能不适用于跨平台应用程序。 无论您选择哪种方法,都需要考虑以下几个步骤来完成转换过程: 1. 读取Word文档:使用适当的库或工具读取Word文档的内容。如果使用Apache POI,您可以使用XWPFDocument类来读取Word文档。 2. 创建PDF文档:使用相应的库或工具创建一个空的PDF文档。 3. 将Word文档内容写入PDF:根据您选择的库或工具,将Word文档的内容逐个写入PDF文档。这可能涉及到转换文本、添加图像、创建表格等操作。 4. 保存PDF文档:在完成写入操作后,将PDF文档保存到目标文件中,以完成转换过程。 总之,通过使用适当的库或工具,您可以轻松将Java中的Word文档转换PDF格式。根据您的具体需求和平台限制选择最适合的解决方案,并遵循相应的步骤来实现转换过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值