用户信息
用户信息
本指南展示如何设置当前用户身份,使 Aspose.Words FOSS 用于 .NET 的报告能够通过用户相关的文档字段进行。
UserInformation 表示在评估报告“当前用户”的字段时,Aspose.Words FOSS 用于 .NET 的身份——Name、Initials 和 Address。它通过 FieldOptions.CurrentUser 附加到文档的字段评估设置中,且可通过 UserInformation.DefaultUser 提供进程范围的回退。
设置当前用户
Document.FieldOptions(一个 FieldOptions 实例)公开了 CurrentUser,一个 UserInformation 对象。在更新用户信息字段之前,设置其 Name、Initials 和 Address 属性,以便它们报告的值与您的应用程序希望记录的身份相匹配。UserInformation.DefaultUser 提供了一个静态的、进程范围的 UserInformation 实例,用于在文档的 FieldOptions.CurrentUser 未显式设置时作为回退。
用户信息字段
三个 Field 子类将当前用户的身份读取到文档正文中:FieldUserName(USERNAME 字段,具有 UserName 属性),FieldUserAddress(USERADDRESS 字段,具有 UserAddress 属性),以及 FieldUserInitials(USERINITIALS 字段,具有 UserInitials 属性)。与其他字段一样,它们共享基础的 Field 生命周期——GetFieldCode()、Result、Update()、Unlink()、Remove()——并且可以使用 FieldType.FieldUserName、FieldType.FieldUserAddress 或 FieldType.FieldUserInitials 通过 DocumentBuilder.InsertField(fieldCode) 或 InsertField(fieldType, updateField) 插入。
提示和最佳实践
- 在对
FieldUserName、FieldUserAddress或FieldUserInitials字段调用Update()之前,先设置FieldOptions.CurrentUser,或在Document.UpdateFields()之前设置 — 否则这些字段将相对于当前生效的UserInformation进行解析。 UserInformation.DefaultUser是一种方便的共享默认值,当相同的身份适用于应用程序处理的每个文档时使用;当不同文档需要不同作者时,请为每个文档设置FieldOptions.CurrentUser。- 如果您的模板使用
FieldUserName、FieldUserAddress和FieldUserInitials中的多个,请同时填入Name、Initials和Address三个字段 — 留空其中一个会产生空字段结果,而非错误。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
FieldUserName 结果在 Update() 之后为空 | UserInformation.Name 从未在活动的 UserInformation 上设置 | 在更新字段之前设置 FieldOptions.CurrentUser.Name(或 UserInformation.DefaultUser.Name) |
| 用户信息字段在不同文档中显示错误的作者 | UserInformation.DefaultUser 在整个进程中共享 | 为每个文档设置 Document.FieldOptions.CurrentUser,而不是依赖默认值 |
FAQ
FieldOptions.CurrentUser 与 UserInformation.DefaultUser 有何区别?
FieldOptions.CurrentUser 是每个文档单独设置的 — 在特定 Document 的 FieldOptions 上设置它,以控制该文档的用户信息字段。UserInformation.DefaultUser 是静态的、进程范围的回退。
哪些字段会受到 UserInformation 的影响?
FieldUserName(USERNAME)、FieldUserAddress(USERADDRESS)和FieldUserInitials(USERINITIALS)——每个都会从当前的UserInformation读取相应的Name、Address或Initials属性。
在更改 UserInformation 后,我需要调用 Update() 吗?
是的——更改 Name、Initials 或 Address 并不会追溯性地更新文档中已经评估的字段;请对特定字段调用 Update(),或调用 Document.UpdateFields()。
API Reference 摘要
| 类 / 属性 | 描述 |
|---|---|
UserInformation | Name, Initials, Address; DefaultUser 静态回退实例 |
FieldOptions.CurrentUser | 在评估用户信息字段时使用的每文档 UserInformation |
FieldUserName / FieldUserAddress / FieldUserInitials | USERNAME, USERADDRESS, USERINITIALS 字段 |