1. AsposeWords 文档模型初识
2. Aspose.words简单使用
Aspose.Words官方参考文档https://docs.aspose.com/words/java/getting-started/
获取授权
License文件获取
文档操作工具
public class AsposeWordUtil {
public Document doc;
public List<Bookmark> bookmarks;
public DocumentBuilder builder;
public AsposeWordUtilImpl(InputStream inputStream) throws Exception {
// 获取授权
AsposeWordsLicense.getLicense();
//根据IO流创建文档
doc = new Document(inputStream);
// 创建操作对象
builder = new DocumentBuilder(doc);
//获取书签集合
BookmarkCollection bookmarkcs = doc.getRange().getBookmarks();
bookmarks = new ArrayList<>();
for (Bookmark bm : bookmarkcs) {
bookmarks.add(bm);
}
}
// 文档清洁化
public void clean() throws Exception {
NodeCollection childNodes = doc.getChildNodes(NodeType.COMMENT, true); //获取批注
childNodes.clear();
doc.acceptAllRevisions(); // 接受所有修订
}
//获取书签列表
public List<Bookmark> getBookMarks() {
for (int i = 0; i < bookmarks.size(); i++) {
if(!bookmarks.get(i).getName().startsWith("PO_")) {
bookmarks.remove(i);
}
}
return bookmarks;
}
//根据书签名称获取书签对象
public Bookmark getBookmark(String bmName) {
try {
return this.bookmarks.stream().filter(item -> item.getName().equals(bmName)).findFirst().get();
} catch (Exception e) {
return null;
}
}
//设置书签值
public boolean setBookmarkVal(String bmName, String val) {
boolean result = true;
try {
Bookmark bookmark = this.bookmarks.stream().filter(item -> item.getName().equals(bmName)).findFirst().get();
bookmark.setText(val);
}catch (Exception e) {
result = false;
}
return result;
}
//保存文档为字节数组
public byte[] saveToByte() throws Exception {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
doc.save(outputStream, SaveFormat.DOC);
byte[] bytes = outputStream.toByteArray();
outputStream.close();
return bytes;
}
//原格式输出流
public OutputStream saveToStream() throws Exception {
OutputStream outputStream = new ByteArrayOutputStream();
doc.save(outputStream,SaveFormat.DOC);
outputStream.close();
return outputStream;
}
//PDF格式输出
public OutputStream wordConvertPdf() throws Exception {
OutputStream outputStream = new ByteArrayOutputStream();
doc.save(outputStream,SaveFormat.PDF);
outputStream.close();
return outputStream;
}
}