diff --git a/AIProofread/ProofreadItem.cs b/AIProofread/ProofreadItem.cs index 59fb6c3..53b5538 100644 --- a/AIProofread/ProofreadItem.cs +++ b/AIProofread/ProofreadItem.cs @@ -20,7 +20,7 @@ namespace UtilLib public string Name { get; set; } public int DocumentId { get; set; } - public ProofreadItem(CorrectItem content,string originSentence,int documentId) + public ProofreadItem(CorrectItem content, string originSentence, int documentId) { this.content = content; this.DocumentId = documentId; @@ -76,7 +76,7 @@ namespace UtilLib private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) { //throw new System.NotImplementedException(); - Bridge.bridge.SelectMarkById(content.Id,DocumentId); + Bridge.bridge.SelectMarkById(content.Id, DocumentId); } public void Select() @@ -134,6 +134,38 @@ namespace UtilLib Logger.Log(e); } } + private void PrepareCommentProcess(Bookmark mark) + { + var doc = Globals.ThisAddIn.Application.ActiveDocument; + var fullRange = doc.Range(); + + var range = mark.Range; + var checkRange = doc.Range( + Math.Max(range.Start - 2, fullRange.Start), + Math.Min(range.End + 2, fullRange.End) + ); + var comments = checkRange.Comments; + Logger.Log("判断是否有批注"); + // 判断当前书签选区内容是否有评论 + if (comments != null && comments.Count > 0) + { + Logger.Log("有批注"); + foreach (Microsoft.Office.Interop.Word.Comment item in comments) + { + // 判断当前评论和书签选区是否一致 + if (item.Scope.Start == range.Start && item.Scope.End == range.End) + { + Logger.Log("删除批注:" + item.Range.Text); + // 删除评论 + item.Delete(); + } + } + } + else + { + Logger.Log("没有批注"); + } + } /// /// 处理校对项 @@ -148,6 +180,7 @@ namespace UtilLib // 采纳 if (status == AcceptStatus.Accept) { + PrepareCommentProcess(mark); if (content.Tag == "r" || content.Tag == "i") { mark.Text = content.Text; @@ -191,15 +224,24 @@ namespace UtilLib var paragraphEnd = mark.Paragraphs.Last.Range.End; var end = mark.End + 2 > paragraphEnd ? paragraphEnd : mark.End + 2; var rng = Globals.ThisAddIn.ActiveDocument.Range(mark.End, end); + Logger.Log($"开始处理百分号问题:位置({mark.End},{end}) => 内容:{rng.Text}"); // 判断书签范围内是否有批注 - if (rng.Text?.IndexOf("%") != -1 && rng.Comments != null && rng.Comments.Count > 0) + if (rng.Text?.IndexOf("%") != -1) { - for (var i = 1; i < rng.Comments.Count; i++) + Logger.Log($"处理百分号问题:有批注"); + if (rng.Comments != null && rng.Comments.Count > 0) { - var comment = rng.Comments[i]; - comment.Scope.Text = comment.Scope.Text.Replace("%", ""); + for (var i = 1; i < rng.Comments.Count; i++) + { + var comment = rng.Comments[i]; + comment.Scope.Text = comment.Scope.Text.Replace("%", ""); + } + } + else + { + rng.Text = rng.Text.Replace("%", ""); } } }