fixed: 校对后批注导致得百分号

This commit is contained in:
LittleBoy 2025-02-11 19:19:12 +08:00
parent b97e7d15ee
commit d37882d6dd

View File

@ -20,7 +20,7 @@ namespace UtilLib
public string Name { get; set; } public string Name { get; set; }
public int DocumentId { 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.content = content;
this.DocumentId = documentId; this.DocumentId = documentId;
@ -76,7 +76,7 @@ namespace UtilLib
private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e)
{ {
//throw new System.NotImplementedException(); //throw new System.NotImplementedException();
Bridge.bridge.SelectMarkById(content.Id,DocumentId); Bridge.bridge.SelectMarkById(content.Id, DocumentId);
} }
public void Select() public void Select()
@ -134,6 +134,38 @@ namespace UtilLib
Logger.Log(e); 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("没有批注");
}
}
/// <summary> /// <summary>
/// 处理校对项 /// 处理校对项
@ -148,6 +180,7 @@ namespace UtilLib
// 采纳 // 采纳
if (status == AcceptStatus.Accept) if (status == AcceptStatus.Accept)
{ {
PrepareCommentProcess(mark);
if (content.Tag == "r" || content.Tag == "i") if (content.Tag == "r" || content.Tag == "i")
{ {
mark.Text = content.Text; mark.Text = content.Text;
@ -191,10 +224,14 @@ namespace UtilLib
var paragraphEnd = mark.Paragraphs.Last.Range.End; var paragraphEnd = mark.Paragraphs.Last.Range.End;
var end = mark.End + 2 > paragraphEnd ? paragraphEnd : mark.End + 2; var end = mark.End + 2 > paragraphEnd ? paragraphEnd : mark.End + 2;
var rng = Globals.ThisAddIn.ActiveDocument.Range(mark.End, end); 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)
{
Logger.Log($"处理百分号问题:有批注");
if (rng.Comments != null && rng.Comments.Count > 0)
{ {
for (var i = 1; i < rng.Comments.Count; i++) for (var i = 1; i < rng.Comments.Count; i++)
{ {
@ -202,6 +239,11 @@ namespace UtilLib
comment.Scope.Text = comment.Scope.Text.Replace("%", ""); comment.Scope.Text = comment.Scope.Text.Replace("%", "");
} }
} }
else
{
rng.Text = rng.Text.Replace("%", "");
}
}
} }
} }
} }