什么是jodconverter,GitHub上的文档是这么说的:

JODConverter,JavaOpenDocument Converter,在不同的办公格式之间转换文档。 它利用Apache OpenOffice或LibreOffice,它们可以说是当今可用的OpenDocument和Microsoft Office格式的最佳免费导入/导出过滤器。

关键是免费兄弟们!!!!!!wps不会技巧的兄弟们还有开vip呢

其中有各种配置,感觉自己学不会是吧,没关系我们有jodconverter-spring-boot-starter

JodConverter Spring Boot Starter 是一个开源的 Spring Boot 插件,用于将 Office 文档(如 Word、Excel 和 PowerPoint 等)转换为 PDF 格式。它基于 JodConverter 库实现,简化了将 JodConverter 集成到 Spring Boot 应用程序中的过程。

JodConverter 是一个用于将 Office 文档转换为 PDF、HTML、图片等格式的 Java 库。它使用 LibreOffice 或 OpenOffice 作为后端转换引擎,支持多种文档格式的转换。但是,要将 JodConverter 集成到 Spring Boot 应用程序中并不容易,需要进行大量的配置和依赖项管理。

LibreOffice:下载地址

OpenOffice:下载地址

为了简化这一过程,开发者推出了 JodConverter Spring Boot Starter。通过在 Spring Boot 应用程序中添加该插件,就可以轻松地将 JodConverter 集成到应用程序中,无需复杂的配置和依赖项管理。

首先,我们需要在 Spring Boot 应用程序的 pom.xml 文件中添加 jodconverter-spring-boot-starter 依赖项:

4.4.7org.jodconverterjodconverter-core${org.jodconverter.version}org.jodconverterjodconverter-spring-boot-starter${org.jodconverter.version}org.jodconverterjodconverter-local${org.jodconverter.version}

以及springboot相关配置

spring:office:home: /usr/lib/libreofficeports: 8100timeout: 60000max-tasks-per-process: 10task-executor:core-pool-size: 2max-pool-size: 10queue-capacity: 100
  1. spring.office.home:指定 LibreOffice 或 OpenOffice 的安装目录。JodConverter 使用 LibreOffice 或 OpenOffice 作为后端转换引擎,该参数需要指定相应的安装目录。

  2. spring.office.ports:指定 LibreOffice 或 OpenOffice 的端口号。JodConverter 通过与 LibreOffice 或 OpenOffice 建立连接来执行转换任务,该参数需要指定可用的端口号。

  3. spring.office.timeout:指定转换任务的最大超时时间(以毫秒为单位)。如果转换任务在指定的超时时间内没有完成,将会被终止。

  4. spring.office.max-tasks-per-process:指定每个 LibreOffice 或 OpenOffice 进程可以处理的最大任务数。当达到最大任务数时,将会启动一个新的进程来处理额外的任务。

  5. spring.office.task-executor.core-pool-size:指定用于执行转换任务的线程池的核心线程数量。核心线程是一直保持活跃的线程,即使没有任务需要执行。

  6. spring.office.task-executor.max-pool-size:指定用于执行转换任务的线程池的最大线程数量。最大线程数量是线程池能够创建的最大线程数。

  7. spring.office.task-executor.queue-capacity:指定用于执行转换任务的线程池的任务队列容量。如果任务队列已满,新的任务将会被拒绝执行。

有的同学就会说了,不用启动吗,mysql都要我们自己启动啊

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 

命令给你们了,答案是不需要,springboot会帮我们启动,不懂得朋友可以看看源码

怎么使用那就太简单了,就这么几行。

@AllArgsConstructor@Service@Slf4jpublic class PdfUtils {private final DocumentConverter documentConverter;public void toPDF(File file, String pdf) throws OfficeException {log.info("正在转换————————{}",file.getName());documentConverter.convert(file).to(new File(pdf)).as(DefaultDocumentFormatRegistry.PDF).execute();log.info("{}转换完成————————{}",file.getName(),pdf);}}

ok,文章结束了~~~~~

但是后期小伙伴把服务弄上服务器又该出问题了。

ps:磊狗我都部署不上去你给我说出问题?

好吧帮人帮到底

写个dockerfile吧

FROM 你的基础镜像#这个安装包上面有链接COPY lib/Apache_OpenOffice_4.1.14_Linux_x86-64_install-deb_zh-CN.tar.gz /tmp/COPY sources.list /etc/apt/sources.list#这个两个是Windows上的字体,没有字体转换会出现乱码,需要的朋友私信我,我教你,就不放文件地址了你们懒得下载COPY lib/*.ttf /usr/share/fonts/truetype/COPY lib/*.ttc /usr/share/fonts/truetype/RUN apt-get update \&& apt-get install -y wget libxext6 libfreetype6 iproute2 openjdk-17-jdk \&& rm -rf /var/lib/apt/lists/*# 安装字体RUN fc-cache -f -vRUN cd /tmp \&& tar -zxvf Apache_OpenOffice_4.1.14_Linux_x86-64_install-deb_zh-CN.tar.gz \&& cd zh-CN/DEBS \&& dpkg -i *.deb \&& rm -rf /tmp/*

总之,JodConverter Spring Boot Starter 是一个非常实用的 Spring Boot 插件,可以轻松地将 JodConverter 集成到应用程序中,实现 Office 文档的格式转换。如果你正在开发一个需要将 Office 文档转换为 PDF 格式的应用程序,那么 JodConverter Spring Boot Starter 将是一个不错的选择,有任何问题欢迎私信留言。