富文本域(RTF)既是Lotus Notes表单设计的,也是数据存储的独特和重要的技术。用户可以在富文本域中编辑包含字体、颜色、段落属性等丰富格式的文本,还可以方便地添加附件。实际上,Notes的表单的布局设计本身就是保存在一个富文本域里。为了保存大段的文本和格式信息以及附件,富文本域没有其他普通域的大小限制(其中的每个段落仍然有64K的限额)。因为其特殊性,富文本域和其他类型的域在行为和表现上也有很大的不同,甚至怪异之处,比如开发人员有时就会遇到隐藏公式对富文本域里的内容不起作用的情况。Notes帮助对富文本域的奥秘没有充分的介绍,网上的资料可以补足这方面。IBM网站上的这篇文章和其中的链接解释了富文本域和隐藏公式的问题:http://www-01.ibm.com/support/docview.wss?rs=0&uid=swg21099682。要更好地认识富文本域的本质和特性,可以读BenLanghinrichs博客里的系列文章:
http://www.geniisoft.com/showcase.nsf/archive/20030922-0158。Ben Langhinrichs开发了一个专门操作富文本域的LotusScript的扩展LSX(操作Domino对象也是通过LSX扩展在LotusScript里实现的),他的公司就以此为主要产品,很多年来一直针对使用Lotus
Notes的客户。可想而知,他如何精通富文本域技术。难能可贵的是他的介绍富文本域的系列文章,这是笔者迄今见到的对富文本域最深入浅出的解释,对其的认识和理解会大大清晰和深入,很多开发中的疑惑也就自然消释。
回到本文的题目,在项目开发中有时会要求用户在提交文档时于特定的域包含附件。对富文本域的这种校验不同于对普通域的非空校验。富文本域的特性体现在两个方面。一方面在前端文档对富文本域内容作的修改,对应的后端文档不能直接读取到,需保存文档或调用前端文档的Refresh(True)方法。另一方面从后端文档对富文本字段作的修改,前端文档无法显示更新,只要关闭文档再打开才能看到。为了使代码更具一般性,在有前端文档以外的其他场合,如单独运行的代理检查数据库里的文档,也能运行,笔者下面给出的这个版本接受的参数类型为后端文档而非前端文档。从前端文档校验时,须先调用前端文档Refresh(True)。
Public Function CheckRTFAttachment(curDoc As NotesDocument,fieldName As String) As Boolean
'fieldnum is the index of RTF item name in the CheckItems array
CheckRTFAttachment=False
Dim vChkItem As Variant
Dim vObject As Variant
Dim intObject As Integer
Set vChkItem=curDoc.GetFirstItem(fieldName)
vObject=vChkItem.EmbeddedObjects
If Not IsEmpty(vObject) Then
For intObject=0 To UBound(vObject)
If vObject(intObject).Type=1454 Then
'1454 means attachment
CheckRTFAttachment=True
Exit Function
End If
Next
End If
End Function
最后用笔者的一次经验说明富文本域的另一项有趣特性。笔者曾经任职的公司使用Symantec的杀毒软件,那时笔者发现打开带有附件的文档时特别慢。在网上搜索后发现Symantec默认情况下会在Lotus Notes客户端打开文档时,将其包含的附件一并下载并检查,而正常状态下,富文本字段里的附件是和包含它们的文档分开单独保存在数据库里的,文档里只保存了它们在数据库里的位置信息。打开一个包含附件的文档时,客户端也只会下载文档,也就是只包含其中的普通域的数据,只有当用户试图打开一个附件时,客户端才会确定附件的位置并下载。这样的方案是自然合理的,减少了不必要的网络负载,加快了文档的打开速度。所幸Symantec软件里的相关设置是可以修改的,禁用了打开文档时就下载附件后,速度恢复正常。
分享到:
相关推荐
domino富文本域内容如何显示在视图中,相信很多开发都遇到过这个问题,大家可以参考一下
uni-app 富文本编辑 回显富文本和修改富文本!uni-app 富文本编辑 回显富文本和修改富文本!uni-app 富文本编辑 回显富文本和修改富文本!uni-app 富文本编辑 回显富文本和修改富文本!uni-app 富文本编辑 回显富...
layer富文本域页面demo
17.如何从文本文件中读取一个字符串?(Visual C++编程 源代码)17.如何从文本文件中读取一个字符串?(Visual C++编程 源代码)17.如何从文本文件中读取一个字符串?(Visual C++编程 源代码)17.如何从文本文件中...
如果引用MSHTML不可用,请换成32位,此演示程序是Win10&x64;位下的HTML引用 基本的文本编辑,查看Html源码、打印、导出文本文件、插入图片、插入表格等,可作为参考使用
利用Aspose.Words读取Word,并排除域代码,提取有效内容。
富文本编辑器 RP 原件库.rplib
此文件包含java上传下载图片功能,以及富文本域使用,具有完整代码。
slate.js富文本编辑器分页(基于react),实现可视化分页
ckeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多WEB项目和大型...
1、内含两个文件:①、UEditorDemo.rar ②、UEdtior的简单使用.doc;...5、最后一点是提示:如果要把UEditor使用在struts中,要重写web.xml中所有过滤.jsp或者.*的过滤器,不然上传图片和文件会失败。
该资源: 制作了两种富文本的使用demo: 1. ueditor 富文本 2. editor.md 富文本(做了组件封装使用更加便捷) 预览地址:https://chengmaofeng.gitee.io/preview/rich-text/#/
Axure在线富文本编辑器
tinyMCE 富文本编辑器 line-height 行高插件。 tinyMCE富文本编辑器line-height行高插件,下载后放在tinyMCE插件的plugins文件夹中,之后初始化中引入plugins,即可在toolbar中展示 tinyMCE line-height 行高插件
微信小程序——图片自适应 ,富文本解析(截图+源码).zip 微信小程序——图片自适应 ,富文本解析(截图+源码).zip 微信小程序——图片自适应 ,富文本解析(截图+源码).zip 微信小程序——图片自适应 ,富文本...
百度富文本解析工具,仿微信富文本改造而来 ,实测可用
例如:如果有一个“Location”域,不论它是何种类型,你都可以用下面的LotusScript代码取得它的值: fieldVals = doc.Location 或者这样: fieldVals = doc.GetItemValue("Location") 在LotusScript中,...
16.如何对文本文件进行查找与替换?(Visual C++编程 源代码)16.如何对文本文件进行查找与替换?(Visual C++编程 源代码)16.如何对文本文件进行查找与替换?(Visual C++编程 源代码)16.如何对文本文件进行查找...
html中获取图片 文章中提取图片 正则获取图片 富文本提取图片路径 字符中中获取图片路径 html中获取图片 文章中提取图片 正则获取图片 富文本提取图片路径 字符中中获取图片路径 html中获取图片 文章中提取图片 正则...
django富文本使用简明教程(基于百度Ueditor编辑器,windows平台) 可以提取富文本文字和图片 python 3.6,django==1.11.14 实现过程可以参考教程 https://mp.csdn.net/postedit/88389535