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

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

概述:超链接指的是在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相关信息的朋友可以点击" 咨询在线客服"~



标签:

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

文章转载自: http://www.e-iceblue.cn/spiredoc/remove-the-hyperlinks-from-the-word-document.html

登录慧都网发表评论登录


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
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