程序员开发实例大全宝库

网站首页 > 编程文章 正文

工业级Word控件 Spire.Doc 超链接教程: 删除 Word 超链接

zazugpt 2024-08-09 12:19:41 编程文章 137 ℃ 0 评论

超链接指的是在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

↓↓↓

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表