Spire.Doc 超链接教程(1):C# 删除 Word 超链接
更多资源查看: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);
}
}
}
}
}
}
结果:
如果你有任何问题或意见,请在下方评论区留言~
还没有评论,来说两句吧...