如何在 .NET 中使用 Word 链接和引用

如何在 .NET 中使用 Word 链接和引用

本指南展示了如何在插入超链接、对书签的交叉引用、提示值字段和引用字段 Aspose.Words FOSS 用于 .NET,使用 FieldHyperlink, FieldRef, FieldPageRef, FieldCitation,以及其他链接和引用 Field 子类位于 Aspose.Words.Fields 命名空间。它涵盖了插入简单超链接、创建书签并对其进行交叉引用、在字段更新期间提示输入值以及引用文献来源。

分步指南

步骤 1:安装软件包

Aspose.Words FOSS for .NET 尚未发布 NuGet 包——请改为从源码构建库。克隆 https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git,然后使用 .NET SDK 在 Release 配置下构建 Aspose.Words.sln,并在项目中引用生成的 Aspose.Words 程序集。该库面向 .NET Standard 2.0,因此可在 .NET Framework 4.6.2+ 和 .NET 6/8/10 上运行。


步骤 2:导入必需的类

为 Document 和 DocumentBuilder 添加 using Aspose.Words; 指令,并为 FieldHyperlink、FieldRef、FieldPageRef、FieldNoteRef、FieldStyleRef、FieldSet、FieldAsk、FieldFillIn、FieldCitation、FieldBibliography 以及本指南涉及的其他字段类添加 using Aspose.Words.Fields; 指令。


步骤 3:插入超链接

对于一个直接的超链接,调用 DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) —— 将 isBookmark: false 作为 URL 目标传入,或将 true 用于链接到同一文档中的书签。当需要快捷方式未公开的属性时,可直接构造一个 FieldHyperlink:Address 和 SubAddress 保存目标 URL 或文档内位置,ScreenTip 设置悬停提示,OpenInNewWindow 和 IsImageMap 为显示标志,Target 指定浏览器框架。


步骤 4:创建书签以供引用

在书签应覆盖的内容之前调用 DocumentBuilder.StartBookmark(bookmarkName),在其之后调用 DocumentBuilder.EndBookmark(bookmarkName),两次调用使用相同的名称。DocumentBuilder.MoveToBookmark(bookmarkName) 将光标移动到已存在的书签——这在在其附近插入交叉引用字段之前定位位置时很有用。


步骤 5:插入对该书签的交叉引用

FieldRef(REF 字段)、FieldPageRef(PAGEREF)以及 FieldNoteRef(NOTEREF)均通过其 BookmarkName 属性解析为指定书签处的内容。将 InsertHyperlink 设置为使引用可点击,将 InsertRelativePosition 设置为报告相对位置(“上方”/“下方”),而不是引用的文本本身。FieldRef 还支持段落编号选项——InsertParagraphNumber、InsertParagraphNumberInFullContext、InsertParagraphNumberInRelativeContext、NumberSeparator——以及 IncludeNoteOrComment。FieldStyleRef(STYLEREF)解析为最近的使用给定 StyleName 格式的段落,而非书签,并可通过 SearchFromBottom 从字段位置向后搜索。FieldSet(SET)定义了一个书签文本值——BookmarkName 和 BookmarkText——可供其他位置的 REF 字段解析。


步骤 6:在更新时提示输入值

FieldAsk (ASK)并 FieldFillIn (FILLIN)请求更新字段的人员提供值:设置 PromptText 到向用户显示的文本, DefaultResponse 作为回退值,且 PromptOnceOnMailMerge 以限制邮件合并期间的重复提示。 FieldAsk 此外将其答案存储在 BookmarkName 以便其他字段可以引用它。对于无人值守的字段更新,请以编程方式提供答案,而不是交互式提示;请参阅 字段指南 了解执行此操作的回调接口。


步骤 7:引用外部或链接内容

FieldDde(DDE)和 FieldDdeAuto(DDEAUTO)通过 ProgId、SourceFullName 和 SourceItem 链接到另一个应用程序中的内容,InsertAsText、InsertAsHtml、InsertAsPicture、InsertAsRtf、InsertAsUnicode 和 InsertAsBitmap 用于选择插入的表示形式,AutoUpdate / IsLinked 控制刷新行为。FieldLink(LINK)是 OLE 链接的等价物,添加了 FormatUpdateType。FieldImport(IMPORT)和 FieldIncludePicture(INCLUDEPICTURE)通过 SourceFullName 和 GraphicFilter 拉入外部图形。FieldInclude(INCLUDE)和 FieldIncludeText(INCLUDETEXT)拉入外部文档内容,使用 BookmarkName 来限定包含的范围,使用 LockFields 防止其被刷新;FieldIncludeText 还通过 Encoding、MimeType、NamespaceMappings、XPath 和 XslTransformation 支持 XML 源。


步骤 8:引用构建块和术语表条目

FieldAutoText(AUTOTEXT),FieldAutoTextList(AUTOTEXTLIST),和 FieldGlossary(GLOSSARY)都通过 EntryName 引用一个已命名的构建块条目;FieldAutoTextList 为其列表式呈现添加了 ListStyle 和 ScreenTip。


步骤 9:插入引用和参考文献字段

FieldCitation (CITATION)以及 FieldBibliography (BIBLIOGRAPHY) 渲染来自文档参考文献数据的内容。设置 FieldCitation.SourceTag (或备用的 AnotherSourceTag)以识别它引用的来源,并使用 Prefix, Suffix, PageNumber, VolumeNumber,以及 Suppress* 标志(SuppressAuthor, SuppressTitle, SuppressYear)来控制引用的格式。 FieldBibliography.SourceTag, FilterLanguageId,以及 FormatLanguageId 控制哪些来源出现在渲染后的参考文献中以及使用何种语言。这些字段只有在匹配到相应的 Source 记录存在 —— 请参阅 参考文献指南 用于构建这些。

常见问题与解决方案

REF、PAGEREF 或 NOTEREF 字段显示错误结果 该 BookmarkName 它所指向的对象在文档中不存在。使用以下方式创建书签 DocumentBuilder.StartBookmark() / EndBookmark() 然后再更新字段。

ASK 或 FILLIN 字段阻止无人值守的更新 未分配回调以编程方式提供答案。请分配在字段指南中描述的 字段指南,或设置 DefaultResponse 在字段上,以便它具有回退值。

CITATION 或 BIBLIOGRAPHY 字段渲染为空 该 SourceTag 未匹配任何 Source 在文档的参考文献数据中。添加匹配的 Source – 请参见 参考文献指南.

DDE、DDEAUTO 或 LINK 字段未刷新 这些字段引用了一个外部 OLE 源,但在原始 Windows/OLE 环境之外不可用。在这种情况下,请将字段存储的结果视为最后已知的值。

使用 InsertHyperlink 插入的超链接缺少我需要的属性 DocumentBuilder.InsertHyperlink() 是一种快捷方式,未暴露所有 FieldHyperlink 属性。构建或检索 FieldHyperlink 直接设置诸如 ScreenTip or IsImageMap.

常见问题

FieldRef 与 FieldStyleRef 有何区别?

FieldRef 解析为位于具名书签 (BookmarkName) 的内容;而 FieldStyleRef 则解析为使用给定 StyleName 格式的最近段落,独立于书签。

如何在不手动构建 Field 的情况下插入一个简单的超链接?

调用 DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark)。

这些链接和引用字段类是否位于与其他字段不同的命名空间中?

不——FieldHyperlink、FieldRef、FieldCitation以及此处涵盖的其余类都是位于 Aspose.Words.Fields 命名空间中的普通 Field 子类,与其他所有字段类型使用的命名空间相同。

引用字段与参考文献数据模型有什么关系?

FieldCitation and FieldBibliography 通过查找呈现内容 SourceTag 针对 Source 在…中描述的记录 参考文献指南 – 这些字段类负责渲染,而 Source and Contributor 类保存底层数据。

如何在引用之前创建书签?

在内容之前调用 DocumentBuilder.StartBookmark(bookmarkName),在内容之后调用 DocumentBuilder.EndBookmark(bookmarkName),两次调用使用相同的名称。

另请参阅

 中文