using System; using System.Drawing; using AIProofread; using Microsoft.Office.Interop.Word; using Microsoft.Office.Tools.Word; using Bookmark = Microsoft.Office.Tools.Word.Bookmark; namespace UtilLib { public class ProofreadItem { public Bookmark mark; public CorrectItem content; private float originSize; private WdColor originColor; private WdColor originBackgroundColor; public string Name { get; set; } public int DocumentId { get; set; } public ProofreadItem(CorrectItem content,int documentId) { this.content = content; this.DocumentId = documentId; InitBookMark(null); SetMarkName(); } private void SetMarkName() { this.Name = this.mark != null ? mark.Name : Config.BuildBookmarkName(content.Id); } public ProofreadItem(CorrectItem content, Bookmark bookmark, int documentId) { this.DocumentId = documentId; this.content = content; if (bookmark != null) { this.mark = bookmark; // 记录目前字体 originSize = bookmark.Range.Font.Size; originBackgroundColor = bookmark.Shading.BackgroundPatternColor; originColor = bookmark.Shading.ForegroundPatternColor; //mark.Selected += OnMarkSelected; } SetMarkName(); //InitBookMark(bookmark); } private void InitBookMark(Bookmark bookmark) { // 创建mark this.mark = bookmark != null ? bookmark : DocumentUtil.AddBookmark(content.Tag == "i" ? null : content.Color, content.Start, content.End); if (mark != null) { // 记录目前字体 originSize = mark.Range.Font.Size; // 设置名称 mark.Name = Config.BuildBookmarkName(content.Id); } } private void OnMarkSelectionChange(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) { //throw new System.NotImplementedException(); //mark.Range.Font.Size = originSize; //Console.WriteLine("xxx"); } private void OnMarkSelected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) { //throw new System.NotImplementedException(); Bridge.bridge.SelectMarkById(content.Id,DocumentId); } public void Select() { if (mark == null) return; mark.Range.Font.Size = originSize + 2; // 将选中标签文本放大字体 mark.Select(); } public void UnSelect() { try { if (mark == null) return; mark.Range.Font.Size = originSize; // 还原 mark.Shading.ForegroundPatternColor = originColor; } catch (Exception e) { Logger.Log(e); } } private void SetMarkStyle() { try { if (mark == null) return; //mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick; mark.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(content.Color)); } catch (Exception e) { Logger.Log(e); } } public void ResetMarkStyle() { if (mark == null) return; if (mark.Range == null) return; try { mark.Range.Font.Size = originSize; // 还原 //mark.Range.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone; //originBackgroundColor = bookmark.Shading.BackgroundPatternColor; mark.Shading.ForegroundPatternColor = originColor; mark.Range.Shading.BackgroundPatternColor = originColor;// Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic; } catch (Exception e) { Logger.Log(e); } } public void Process(int status) { if (mark == null) return; // content.IsAccept = status; if (status == AcceptStatus.Accept) { if (content.Tag == "r" || content.Tag == "i") { mark.Text = content.Text; } else if (content.Tag == "d") { mark.Text = ""; } ResetMarkStyle(); } else if (status == AcceptStatus.Review || status == AcceptStatus.Ignore) { ResetMarkStyle(); // 新增添加了空格 所以当忽略时还原 if (content.Tag == "i") { mark.Text = ""; } } else if (status == AcceptStatus.Default) { if (content.Tag == "r" || content.Tag == "d") { mark.Text = content.Origin; } else if (content.Tag == "i") { mark.Text = ToolUtil.GetBlankText(content.Text.Length); } SetMarkStyle(); } } } }