Spire.Doc 超链接教程(1):C# 删除 Word 超链接

    xiaoxiao2022-07-02  107

    更多资源查看:Spire.Doc文本教程 | Spire.XLS图表系列教程 | Spire.PDF系列教程

        超链接指的是在Word文本或者图片中插入能跳转到其他位置或对象的链接,常见的超链接可以链接到网址、电子邮箱地址、外部文件和书签。本文将介绍如何使用Spire.Doc删除文本超链接和图片超链接,并保留原来的文本和图片。

    【下载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);                     }                 }             }         }     } }

    结果:

    如果你有任何问题或意见,请在下方评论区留言~

    最新回复(0)