JODConvert + SpringBoot实现文档转换word to pdf

文档转换需求在各种应用中甚是常见,目前其实没有太多方案可以选择,对于简单的文档可以自己编辑代码实现,比如使用poi + itext,但是对于复杂文档的转换,不是普通人可以写代码完成的。可以使用微软的office软件接口来实现转换,但缺点是软件收费,且不跨平台,还有可能版权方面的风险。

JODConverter

JODConverter,是一个Java的OpenDocument文件转换器,可以进行许多文件格式的转换。它依赖于OpenOffice.org或者LibreOffice提供的服务来进行转换,它能将Microsoft Office文档(Word,Excel,PowerPoint)转换为PDF格式。

其本身使用Java编写,开源,跨平台,同时OpenOffice和LibreOffice也是开源跨平台的,能适应更多场景,也能避免一些版权问题。缺点是不能完全兼容微软Office,但也是极个别情况。和SpringBoot集成还可以对外提供转换服务,总的来讲还是挺完美的。

准备

首先要有一个可以运行的SpringBoot应用,这里使用的2.x版本。JODConverter从4.1.1版本开始,必须使用jdk8构建,之前版本可以使用jdk7

添加依赖

pom.xml


  org.jodconverter
  jodconverter-local
  4.3.0


  org.jodconverter
  jodconverter-spring-boot-starter
  4.3.0

启用自动配置

application.yml

jodconverter:
  local:
    enabled: true

其他配置项可参考:org.jodconverter.boot.autoconfigure.JodConverterLocalProperties

示例代码

@Service
public class JODConverterService {
    @Autowired
    private DocumentConverter documentConverter;

    public void convert(String src, String desc) throws OfficeException {
        documentConverter.convert(new File(src)).to(new File(desc)).execute();
    }
}

测试代码

@SpringBootTest
public class JODConverterServiceTests {
    @Autowired
    private JODConverterService jodConverterService;

    @Test
    void convert() throws OfficeException {
        jodConverterService.convert("test.docx", "test.pdf");
    }
}

Docker online

如果使用JODConverter的Docker online镜像,可以使用jodconverter-remote模块。

其他推荐

  • xdocreport (可根据模板动态生成word、pdf、html,也可直接转换格式,但是兼容性不太好)
  • flying-saucer-pdf (可将html渲染成pdf,并且支持css 2.1样式,和FreeMarker结合使用体验不错,适用于生成报表)

你可能感兴趣的:(JODConvert + SpringBoot实现文档转换word to pdf)