在上一篇文章中介绍的 添加批注 是通过 paragraph.appendcomment() 方法给整个段落添加批注,默认情况下,如果没有选择文本,批注标记将放在段落的末尾。如果要向特定文本添加批注,需要在文本范围的开始和结束处放置批注标记(由commentmark类表示),本文将对此做进一步介绍。
import com.spire.doc.*;
import com.spire.doc.documents.commentmark;
import com.spire.doc.documents.commentmarktype;
import com.spire.doc.documents.paragraph;
import com.spire.doc.documents.textselection;
import com.spire.doc.fields.comment;
public class addcommenttocharacters {
public static void main(string[] args) {
//加载测试文档
document doc = new document();
doc.loadfromfile("test.docx");
//查找指定字符串
textselection[] selections = doc.findallstring("皱状厚膜", true, false);
//获取关键字符串所在段落
paragraph para = selections[0].getasonerange().getownerparagraph();
int index = para.getchildobjects().indexof(selections[0].getasonerange());
//设置批注id
commentmark start = new commentmark(doc);
start.setcommentid(1);
start.settype(commentmarktype.comment_start);
commentmark end = new commentmark(doc);
end.settype(commentmarktype.comment_end);
end.setcommentid(1);
//添加批注内容
string str = "给指定字符串添加批注";
comment comment = new comment(doc);
comment.getformat().setcommentid(1);
comment.getbody().addparagraph().appendtext(str);
comment.getformat().setauthor("作者:");
comment.getformat().setinitial("cm");
para.getchildobjects().insert(index, start);
para.getchildobjects().insert(index 1, selections[0].getasonerange());
para.getchildobjects().insert(index 2,end);
para.getchildobjects().insert(index 3, comment);
//保存文档
doc.savetofile("字符串批注.docx",fileformat.docx_2013);
doc.dispose();
}
}
批注添加效果: