SpringBoot + LibreOffice/OpenOffice实现在线预览时需要注意的几点问题

参考文章:https://segmentfault.com/a/1190000015129654?utm_source=channel-hottest

本篇文章主要聊一下在使用LibreOffice/OpenOffice实现在线预览中遇到的几点问题,具体如何实现相关配置请参考上边的文章(转载请注明)。

LibreOffice/OpenOffice是Apache开源的用于操作Office文件的软件,Apache于2016年已经关闭OpenOffice开源项目,转而推荐使用libreOffice,下边文章中提到的都以LibreOffice为主(LibreOffice/OpenOffice两者的区别可以大致理解为类似的底层实现,不同的两个名字)。

对于大家而言可能很容易就能实现一个文档转化、文档预览的项目。在这里主要说明一下在项目中可能需要注意的两个问题:

  1. LibreOffice处理请求的效率;
    可以借助Jmeter等性能测试工具(比如使用Http请求性能测试),或者查看官方文档可以知道,当有多个请求来到LibreOffice处理进程时,一个LibreOffice soffice进程一次只处理一个进程。
    当并发请求量增多时,需要考虑在增加LibreOffice后端守护进程(soffice进程)。
    具体在SpringBoot项目中的配置就是增加portNumbers端口配置数量,如下:
    jodconverter:
      local:
        enabled: true
        kill-existing-process: true
        max-tasks-per-process: 100
        office-home: C:\Program Files\LibreOffice
        portNumbers: 8100,8101,8102,8103,8104
  2.  LibreOffice在线转化并打水印(比如doc -> PDF)的性能问题;
    使用LibreOffice并没有特别好的优化方式,因此想要达到尽可能快的响应,离线转PDF是个不错的选择。因为一篇比较大的文章,我们在转化PDF时可能会花费15s,但是如果只是打水印的话可能只需要10~40ms。

本文只是用来讨论,有什么错误的地方请指正,不喜勿喷。谢谢。

你可能感兴趣的:(Java)