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

不念不忘少年蓝@ 2022-01-29 14:25 368阅读 0赞

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

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

下载Spire.Doc最新试用版

源文档:

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

  1. //创建Word对象并加载文档
  2. Document document = new Document();
  3. document.LoadFromFile(@"hyperlinks.docx");
  4. foreach (Section section in document.Sections)
  5. {
  6. //删除正文里的超链接
  7. foreach (DocumentObject obj in section.Body.ChildObjects)
  8. {
  9. RemoveLinks(obj,document);
  10. }
  11. //删除页眉页脚中的超链接
  12. foreach (HeaderFooter hf in section.HeadersFooters)
  13. {
  14. foreach (DocumentObject hfobj in hf.ChildObjects)
  15. {
  16. RemoveLinks(hfobj, document);
  17. }
  18. }
  19. }
  20. //保存文档
  21. document.SaveToFile("RemoveLinks.docx",FileFormat.Docx);
  22. private static void RemoveLinks(DocumentObject obj,Document document)
  23. {
  24. //删除段落中的超链接
  25. RemoveLinksInPara(obj,document);
  26. //删除表格中的超链接
  27. if (obj.DocumentObjectType == DocumentObjectType.Table)
  28. {
  29. foreach (TableRow row in (obj as Table).Rows)
  30. {
  31. foreach (TableCell cell in row.Cells)
  32. {
  33. foreach (DocumentObject cobj in cell.ChildObjects)
  34. {
  35. RemoveLinksInPara(cobj,document);
  36. }
  37. }
  38. }
  39. }
  40. }
  41. private static void RemoveLinksInPara(DocumentObject obj,Document document)
  42. {
  43. if (obj.DocumentObjectType == DocumentObjectType.Paragraph)
  44. {
  45. var objs = (obj as Paragraph).ChildObjects;
  46. for (int i = 0; i < objs.Count; i++)
  47. {
  48. if (objs[i].DocumentObjectType == DocumentObjectType.Field)
  49. {
  50. //获取超链接域
  51. Field field = objs[i] as Field;
  52. if (field.Type == FieldType.FieldHyperlink)
  53. {
  54. //获取超链的文本或图片对象
  55. DocumentObject dObj = field.NextSibling.NextSibling as DocumentObject;
  56. //删除文本超链接,保留文本和样式
  57. if (dObj is TextRange)
  58. {
  59. //获取超链接文本样式
  60. CharacterFormat format = (dObj as TextRange).CharacterFormat;
  61. format.UnderlineStyle = UnderlineStyle.None;
  62. format.TextColor = Color.Black;
  63. //创建TextRange并把超链接的文本赋给它
  64. TextRange tr = new TextRange(document);
  65. tr.Text = field.FieldText;
  66. //应用样式
  67. tr.ApplyCharacterFormat(format);
  68. //删除文本超链接域
  69. objs.RemoveAt(i);
  70. //重新插入文本
  71. objs.Insert(i, tr);
  72. }
  73. //删除图片超链接,保留图片
  74. if (dObj is DocPicture)
  75. {
  76. //删除图片超链接域
  77. objs.RemoveAt(i);
  78. //重新插入图片
  79. objs.Insert(i, dObj);
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }

结果:

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

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

发表评论

表情:
评论列表 (有 0 条评论,368人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    基础知识 定义: 超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,可以点击这些内容来跳转到新的页面或者当前页面中的某个部分。 语法: `<a href

    相关 HTML——

             一、What?——什么是超链接     先说一下我个人目前对“超链接”的理解,就两字:跳转     哈哈,我个人的理解好像解释的有点简单粗暴了,比原词还