大家好,才是真的好。
一般而言,Notes中上传的附件都会对应到某个富文本字段中,这样附件易于处理,也容易进行排版。
最简单的案例就是我们的Notes邮件,附件可以附加在正文中,如下图:
还有我们传统的、Notes自带的Doc Library库:
又或者你自己开发的某些Notes应用,进行文字和附件混排,如下图:
上面无一例外验证了,Notes中上传的附件都会对应到某个富文本字段中,可以和富文本字段中的文字或其他对象(如图片、表格)等进行混排。
那么,问题来了,有没有可能Notes文档中没有富文本域,然后也有附件?
其实,最早1991年发布的Notes V2版本中,就是这么做的:文档中没有富文本字段,但依旧可以存附件,默认地存储在文档的最底下位置,和文档内容使用一条细黑的线条进行分割,如下图:
因此,这种附件称之为V2附件。
当然,如果你的Notes表单也发布到Web上使用,而用户通过Web页面中的上传按钮,上传的附件,也会这么存储。
因此,这种附件有时候也称之为Web样式附件。
我们这里简单起见,都称之为V2附件。
你收到的外部邮件,附件也经常会显示为v2附件。
所以,普遍有一种需求,要把v2附件处理一下,存放到文档的某个富文本字段中。
这个时候就需要使用LotusScript代码处理一下了,这里有一段示例代码,将Notes文档中的v2附件全部提出来,存储到当前文档名叫RTF的富文本字段,如下图:
Sub Initialize
Dim doc As NotesDocument
Dim item As Variant
Dim nitem As Variant
Dim rtitem As Variant
Dim uidoc As notesuidocument
Dim w As New notesuiworkspace
Set uidoc=w.currentdocument
Set doc = uidoc.document
Forall i In doc.Items
If i.type = Attachment Then
Set emb = doc.GetAttachment(i.values(0))
Set rtitem=doc.getfirstitem("RTF")
Call emb.extractfile("C:\" & emb.name)
Call rtitem.embedobject(EMBED_Attachment, "", "C:\" & emb.name, emb.name)
Kill "C:\" & emb.name
Call emb.remove
Call doc.save(1,1)
' If one is only searching for one attachment then remove the remark from the line below
' Exit Forall
End If
End Forall
End Sub
这个需求看起来解决很容易,不过还有一种需求解决起来就比较费劲,就是因为Notes应用程序里面都是v2附件(通过Web附件上传的),现在不能加入富文本字段,而只是添加、改名和替换等;或者说,要求使用LotusScript从富文本将附件提出来,变成V2附件。
老实说,这个默认的,LotusScript真没有方式来进行处理。
不过,我们有一个万能的DXL,还记得吗?我们写了有《了不起的DXL!》,还有《利用DXL处理附件》等,你可以先看看。
https://lotusscript.torknado.com/blog/creating-v2-style-attachments/站点上的最新一篇文章,就讲述了如何利用DXL实现使用LotusScript从富文本将附件提出来,变成V2附件,或直接进行v2附件的添加、改名、替换等需求。
果然DXL是无敌的!
今天就介绍到这里吧。更多文章请关注微信公众号:协作者