1.```java依赖
<dependency>
<groupId>com.aspose.cells</groupId>
<artifactId>aspose-cells</artifactId>
<version>8.5.2</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>15.8.0</version>
</dependency>
2.service方法
```java
public String getReportFileStream(String id) {
TestReport report = this.getById(id);
//word转换pdf
String pdfUrl = WordToPdfUtils.wordToPdf(report.getReportUrl());
report.setReportPdfUrl(pdfUrl);
this.updateById(report);
return pdfUrl;
}
3.工具类
java
import cn.hutool.system.OsInfo;
import cn.hutool.system.SystemUtil;
import com.aspose.cells.License;
import com.aspose.words.Document;
import com.aspose.words.FontSettings;
import com.aspose.words.SaveFormat;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* @description:
* @create: 2022-02-28 10:22
**/
@Slf4j
public class WordToPdfUtils {
/**
* aspose授权
*
* @return
*/
public static boolean getLicense() {
boolean result = false;
try {
// 凭证
String licenseStr = "";
InputStream license = new ByteArrayInputStream(licenseStr.getBytes("UTF-8"));
License asposeLic = new License();
asposeLic.setLicense(license);
result = true;
} catch (Exception e) {
log.error("error:", e);
}
return result;
}
/**
* word转pdf
*
* @param docFilePath
*/
public static String wordToPdf(String docFilePath) {
FileOutputStream fileOS = null;
// 验证License
if (!getLicense()) {
log.error("验证License失败!");
return null;
}
//文件名不带后缀
Path docPath = Paths.get(docFilePath);
String fileNameWithoutSuffix = docPath.toString().replaceFirst("[.][^.]+$", "");
Path filePth = Paths.get(fileNameWithoutSuffix + ".pdf");
String filePathStr = filePth.toString();
try {
//此处处理乱码和小方块
//如果在本地运行,此处报错,请注释这个这是字体,主要是为了解决linux环境下面运行jar时找不到中文字体的问题 FontSettings.
//在linux中运行请放开注释!!否则中文乱码!
OsInfo osInfo = SystemUtil.getOsInfo();
if (osInfo.isLinux()) {
FontSettings.setFontsFolders(new String[]{"/usr/share/fonts", "/usr/share/fonts/chinese"}, true);
}
Document doc = new Document(docFilePath);
fileOS = new FileOutputStream(new File(filePathStr));
// 保存转换的pdf文件
doc.save(fileOS, SaveFormat.PDF);
} catch (Exception e) {
log.error("error:", e);
} finally {
try {
if (fileOS != null) {
fileOS.close();
}
} catch (IOException e) {
log.error("error:", e);
}
}
return filePathStr;
}
}