使用 aspose-words 进行转换
方案一:
<dependency>
<groupId>com.asposegroupId>
<artifactId>aspose-wordsartifactId>
<version>0.0.1-SNAPSHOTversion>
<scope>systemscope>
<systemPath>${project.basedir}/src/main/resources/aspose-words-15.8.0-jdk16.jarsystemPath>
dependency>
因为 aspose-words-15.8.0-jdk16.jar 从中央仓库拉取不到,所以从固定位置加载(如果能拉取到就直接指定),其中
system 表示这个依赖项将从本地文件系统的一个具体位置加载,而不是从Maven中央仓库或其他远程仓库。
systemPath 指定了JAR文件在本地系统上的确切路径。
方案二:
<dependency>
<groupId>com.luhuiguogroupId>
<artifactId>aspose-wordsartifactId>
<version>22.10version>
dependency>
这个中央仓库能拉取到
代码实现:
public void exportFile() {
// wordPath 表示word文档地址
String wordPath = "E:\IdeaProjects\files\download\cesdata.docx";
File file = new File(wordPath);
// 获取文件数据
byte[] fileData = getFileData(wordPath);
// pdfPath 表示PDF输出地址
String pdfPath = "E:\IdeaProjects\files\download\cesdata.pdf";
// 使用方案一需要设置license,不设置会有水印(方案二测试不设置也不会有水印,加上也行)
String s = "Aspose.Total for Java Aspose.Words for Java Enterprise 20991231 20991231 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= ";
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License license = new License();
license.setLicense(is);
// 导出文件
try (InputStream inputStream = new ByteArrayInputStream(fileData)) {
com.aspose.words.Document document = new com.aspose.words.Document(inputStream);
document.save(Files.newOutputStream(new File(pdfPath).toPath()), SaveFormat.PDF);
}
}
// 获取文件数据
public byte[] getFileData(String filePath) {
try (FileInputStream fis = new FileInputStream(filePath);
ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
return bos.toByteArray();
} catch (Exception err) {
return null;
}
}