本文介绍读取word批注的方法,包括读取word批注中的文本及图片。
测试文档如下:批注中包含文本和图片
读取批注中的文本
import com.spire.doc.*;
import com.spire.doc.documents.paragraph;
import com.spire.doc.fields.comment;
import com.spire.doc.fields.textrange;
public class readcomment {
public static void main(string[] args) {
//加载测试文档
document doc = new document();
doc.loadfromfile("测试文档.docx");
//实例化string类型变量
string text = "";
//遍历所有批注
for(int i = 0;i< doc.getcomments().getcount();i ){
comment comment = doc.getcomments().get(i);
//遍历所有批注中的段落
for(int j= 0;j < comment.getbody().getparagraphs().getcount();j ) {
paragraph paragraph = comment.getbody().getparagraphs().get(j);
//遍历段落中的对象
for (object object : paragraph.getchildobjects()) {
//读取文本
if (object instanceof textrange) {
textrange textrange = (textrange) object;
text = text textrange.gettext();
}
}
}
}
//输入文本内容
system.out.println(text);
}
}
批注文本读取结果:
读取批注中的图片
import com.spire.doc.*;
import com.spire.doc.documents.paragraph;
import com.spire.doc.fields.comment;
import com.spire.doc.fields.docpicture;
import javax.imageio.imageio;
import java.awt.image.renderedimage;
import java.io.file;
import java.io.ioexception;
import java.util.arraylist;
public class extractimgsincomment {
public static void main(string[] args) throws ioexception{
//加载测试文档
document doc = new document();
doc.loadfromfile("测试文档.docx");
//创建arraylist数组对象
arraylist images = new arraylist();
//遍历所有批注
for(int i = 0;i< doc.getcomments().getcount();i ){
comment comment = doc.getcomments().get(i);
//遍历所有批注中的段落
for(int j= 0;j < comment.getbody().getparagraphs().getcount();j ) {
paragraph paragraph = comment.getbody().getparagraphs().get(j);
//遍历段落中的对象
for (object object : paragraph.getchildobjects()) {
//获取图片对象
if(object instanceof docpicture){
docpicture picture = (docpicture) object;
images.add(picture.getimage());
}
}
}
}
//提取图片,并指定图片格式
for (int z = 0; z< images.size(); z ) {
file file = new file(string.format("图片-%d.png", z));
imageio.write((renderedimage) images.get(z), "png", file);
}
}
}
批注图片读取结果: