Java对word进行操作框架—Aspose.words
当Java需要对word进行操作 : 可以使用aspose.word进行, 这个框架是收费框架
自己项目使用的是若依微服务框架
第一步 : 导入jar到项目, 因为该jar是收费的 , 阿里云私服没有, 需要自己推送到本地仓库
<dependency>
<groupId>com.aspose.words</groupId>
<artifactId>aspose-words</artifactId>
<version>19.1</version>
</dependency>
执行mvn命令
mvn install:install-file -Dfile=D:\aspose-words-21.5.jar -DgroupId=com.aspose.words -DartifactId=aspose-words -Dversion=21.5 -Dpackaging=jar clean
Dfile是需要自己设置的 ,也就是下载到的jar路径
下面是我自己写的工具类, 大家可以作为参考
- 刷新目录
// 刷新文档的目录 , 如果使用poi-TL生成目录时 可以使用该方法
public static void RefreshToc(String filePath, String reportName) {
try {
Document document = new Document(filePath + reportName);
document.updateFields();
document.save(filePath + reportName);
} catch (Exception e) {
e.printStackTrace();
log.error("生成目录失败!");
throw new ServiceException("生成目录失败!");
}
}
- 合并文档
public static void MergeDoc(String mainFilePath, List<Map> annex, String filePath, PaProject project) {
List<String> tempFile = Lists.newArrayList();
try {
Configure configure = Configure.builder().build();
// 主文档
Document mFile = new Document(mainFilePath);
final int[] index = {2};
annex.forEach(i -> {
try {
Document attHP = new Document(filePath + annexName);
mFile.appendDocument(attHP, ImportFormatMode.KEEP_SOURCE_FORMATTING);
// 合并附件信息
Document attDoc = new Document(filePath + i.get("attName"));
mFile.appendDocument(attDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
// 存储删除
tempFile.add(filePath + annexName);
tempFile.add(filePath + i.get("attName"));
}
} catch (Exception e) {
e.printStackTrace();
}
index[0]++;
});
NodeCollection childNodes = mFile.getChildNodes(NodeType.COMMENT, true); //获取批注
childNodes.clear();
mFile.acceptAllRevisions(); // 接受所有修订
mFile.save(mainFilePath);
} catch (Exception e) {
e.printStackTrace();
log.error("合并附件失败!");
} finally {
tempFile.forEach(i -> {
FileUtils.deleteFile(i);
});
}
}
- wordTopdf
// linux中进行word转换pdf时会出现字体乱码,是因为linux没有字体,只需要将本地电脑的字体库导入即可
public static String WordToPdf(String mainFilePath, String filePath) {
String pdfName = "pdf_temp" + System.currentTimeMillis() + ".pdf";
String property = System.getProperty("os.name");
// aspose不支持linux 增加字体即可
FontSettings.getDefaultInstance().setFontsFolders(new String[]{"/usr/local/application/file/fonts"},
true);
FileOutputStream out = null;
try {
Document mFile = new Document(mainFilePath);
out = new FileOutputStream(new File(filePath + pdfName));
mFile.save(out, SaveFormat.PDF);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException("生成PDF文件失败!");
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return pdfName;
}