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

转帖|使用教程|编辑:黄竹雯|2019-05-22 10:14:27.490|阅读 57 次

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

相关链接:

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


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

下载Spire.Doc最新试用版

源文档:

remove-the-hyperlinks-from-the-word-document-1

//创建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);
                    }
                }
            }
        }
    }
}

结果:

remove-the-hyperlinks-from-the-word-document-2


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


想要购买正版授权,或者获取更多Spire.XLS相关信息的朋友可以点击" 咨询在线客服"~



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录慧都网发表评论登录


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
title
title
相关厂商
相关产品
Spire.Doc for .NET

工业级Word控件,高效开发.NET平台的Word文档文件,领跑工业4.0。

Spire.Doc for WPF

Spire.Doc for WPF 是一款在WPF平台上操作的MS Word组件,可以轻松并专业地访问大量各种不同的word文档处理任务。

Spire.Doc for Silverlight

Spire.Doc for Silverlight是一款在Silverlight平台上操作的MS Word组件,让用户可以执行基本的文字处理任务。

Spire.Doc Pack

专业的Word工具套包,强大的Word编辑功能。

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat