什么是jodconverter,GitHub上的文档是这么说的:
JODConverter,Java?OpenDocument 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 依赖项:
<properties>
<org.jodconverter.version>4.4.7</org.jodconverter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-core</artifactId>
<version>${org.jodconverter.version}</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-spring-boot-starter</artifactId>
<version>${org.jodconverter.version}</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>${org.jodconverter.version}</version>
</dependency>
以及springboot相关配置
spring:
office:
home: /usr/lib/libreoffice
ports: 8100
timeout: 60000
max-tasks-per-process: 10
task-executor:
core-pool-size: 2
max-pool-size: 10
queue-capacity: 100
spring.office.home
:指定 LibreOffice 或 OpenOffice 的安装目录。JodConverter 使用 LibreOffice 或 OpenOffice 作为后端转换引擎,该参数需要指定相应的安装目录。
spring.office.ports
:指定 LibreOffice 或 OpenOffice 的端口号。JodConverter 通过与 LibreOffice 或 OpenOffice 建立连接来执行转换任务,该参数需要指定可用的端口号。
spring.office.timeout
:指定转换任务的最大超时时间(以毫秒为单位)。如果转换任务在指定的超时时间内没有完成,将会被终止。
spring.office.max-tasks-per-process
:指定每个 LibreOffice 或 OpenOffice 进程可以处理的最大任务数。当达到最大任务数时,将会启动一个新的进程来处理额外的任务。
spring.office.task-executor.core-pool-size
:指定用于执行转换任务的线程池的核心线程数量。核心线程是一直保持活跃的线程,即使没有任务需要执行。
spring.office.task-executor.max-pool-size
:指定用于执行转换任务的线程池的最大线程数量。最大线程数量是线程池能够创建的最大线程数。
spring.office.task-executor.queue-capacity
:指定用于执行转换任务的线程池的任务队列容量。如果任务队列已满,新的任务将会被拒绝执行。
有的同学就会说了,不用启动吗,mysql都要我们自己启动啊
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
命令给你们了,答案是不需要,springboot会帮我们启动,不懂得朋友可以看看源码
怎么使用那就太简单了,就这么几行。
@AllArgsConstructor
@Service
@Slf4j
public 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 -v
RUN 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 将是一个不错的选择,有任何问题欢迎私信留言。