超链接指的是在Word文本或者图片中插入能跳转到其他位置或对象的链接,常见的超链接可以链接到网址、电子邮箱地址、外部文件和书签。本文将介绍如何使用Spire.Doc删除文本超链接和图片超链接,并保留原来的文本和图片。
源文档:
//创建Word对象并加载文档 Document document = new Document(); document.LoadFromFile(@"hyperlinks.docx"); foreach (Section section in document.Sections) { //删除正文里的超链接 foreach (DocumentObject obj in section.Body.ChildObjects) { RemoveLinks(obj,document); } //删除页眉页脚中的超链接 foreach (HeaderFooter hf in section.HeadersFooters) { foreach (DocumentObject hfobj in hf.ChildObjects) { RemoveLinks(hfobj, document); } } } //保存文档 document.SaveToFile("RemoveLinks.docx",FileFormat.Docx); private static void RemoveLinks(DocumentObject obj,Document document) { //删除段落中的超链接 RemoveLinksInPara(obj,document); //删除表格中的超链接 if (obj.DocumentObjectType == DocumentObjectType.Table) { foreach (TableRow row in (obj as Table).Rows) { foreach (TableCell cell in row.Cells) { foreach (DocumentObject cobj in cell.ChildObjects) { RemoveLinksInPara(cobj,document); } } } } } private static void RemoveLinksInPara(DocumentObject obj,Document document) { if (obj.DocumentObjectType == DocumentObjectType.Paragraph) { var objs = (obj as Paragraph).ChildObjects; for (int i = 0; i < objs.Count; i++) { if (objs[i].DocumentObjectType == DocumentObjectType.Field) { //获取超链接域 Field field = objs[i] as Field; if (field.Type == FieldType.FieldHyperlink) { //获取超链的文本或图片对象 DocumentObject dObj = field.NextSibling.NextSibling as DocumentObject; //删除文本超链接,保留文本和样式 if (dObj is TextRange) { //获取超链接文本样式 CharacterFormat format = (dObj as TextRange).CharacterFormat; format.UnderlineStyle = UnderlineStyle.None; format.TextColor = Color.Black; //创建TextRange并把超链接的文本赋给它 TextRange tr = new TextRange(document); tr.Text = field.FieldText; //应用样式 tr.ApplyCharacterFormat(format); //删除文本超链接域 objs.RemoveAt(i); //重新插入文本 objs.Insert(i, tr); } //删除图片超链接,保留图片 if (dObj is DocPicture) { //删除图片超链接域 objs.RemoveAt(i); //重新插入图片 objs.Insert(i, dObj); } } } } } }
结果:
如果你有任何问题或意见,请在下方评论区留言~
点击“了解更多”,立即体验iSpring Suite
↓↓↓
本文暂时没有评论,来添加一个吧(●'◡'●)