java springboot word文档转pdf

java springboot word文档转pdf

1、环境

1、java、springboot

2、maven或者gradle

3、办公软件(自己电脑上的wps或者office等,如果部署到服务器上也要安装,linux、Mac 都有,自己安装)

可能会遇到的问题:

java springboot maven项目,当然gradle 也可以,特别注意的是这个需要依赖外部软件,就是我们熟知的wps或者office 都可以,应该说是有办公软件且办公软件有word转pdf的功能,这个它应该是获取到我们电脑本地的环境来转的,如果有时候不行的话可以考虑一下是不是自己的办公软件的问题,我之前就遇到这个问题,我本地已经安装wps的,也可以正常使用,但是代码里面就是不行,一直报流已经关闭,意思就是获取不到我本地相关的流。最后我重新安装一下我的办公软件(wps)就好了,还有一种就可能版本的问题,也一定要注意

2、依赖

java 复制代码
<dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-transformer-msoffice-word</artifactId>
            <version>1.0.3</version>
        </dependency>

这是maven的依赖,其他的自己找

3、代码

java 复制代码
package org.jeecg.modules.xunshu.utils;

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.io.*;

/**
 * @author weisn
 */
@Slf4j
@Component
public class WordConvertPdfUtil {

	private  static final IConverter CONVERTER = LocalConverter.builder().build();

	/**
	 * 通过documents4j 实现word转pdf
	 *
	 * @param sourcePath 源文件地址 如 /root/example.doc
	 * @param targetPath 目标文件地址 如 /root/example.pdf
	 */
	public static void documents4jWordToPdf(String sourcePath, String targetPath) throws IOException {
		InputStream docxInputStream = null;
		OutputStream outputStream = null;
		try {
			// 原word地址
			docxInputStream = new FileInputStream(sourcePath);
			// 转换后pdf生成地址
			outputStream = new FileOutputStream(targetPath);
			IConverter converter = LocalConverter.builder().build();
			converter.convert(docxInputStream)
					.as(DocumentType.DOCX)
					.to(outputStream)
					.as(DocumentType.PDF).execute();
			// 关闭
			converter.shutDown();
			// 关闭
			outputStream.close();
			// 关闭
			docxInputStream.close();
		} catch (Exception e) {
			System.out.println("[documents4J] word转pdf失败:" + e.toString());
		} finally {
			if (outputStream != null) {
				outputStream.close();
			}
			if (docxInputStream != null) {
				docxInputStream.close();
			}
		}
	}


}
相关推荐
庞传奇32 分钟前
【LC】560. 和为 K 的子数组
java·算法·leetcode
@糊糊涂涂1 小时前
MAC借助终端上传jar包到云服务器
java·服务器·macos·jar
东方巴黎~Sunsiny1 小时前
给定数字 [3, 30, 34, 5, 9] 拼接成的最大数字,使用java实现
java·开发语言
daiyang123...1 小时前
Java 复习 【知识改变命运】第九章
java·开发语言·算法
Erosion20201 小时前
RMI原理及常见反序列化攻击手法
java·反序列化·java sec
AskHarries1 小时前
Spring Cloud Consul实现选举机制
java·后端·spring cloud·consul
山山而川粤2 小时前
大连环保公益管理系统|Java|SSM|Vue| 前后端分离
java·开发语言·后端·学习·mysql
尘浮生2 小时前
Java项目实战II基于SpringBoot前后端分离的网吧管理系统(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·微信小程序·小程序
哎呦没2 小时前
企业OA管理系统:Spring Boot技术实现与案例研究
android·spring boot·后端
jakeswang2 小时前
spring循环依赖以及MyBatis-Plus的继承特性导致循环依赖自动解决失效
java·spring·mybatis