有一种附件叫做V2附件

大家好,才是真的好。

一般而言,Notes中上传的附件都会对应到某个富文本字段中,这样附件易于处理,也容易进行排版。

最简单的案例就是我们的Notes邮件,附件可以附加在正文中,如下图:
有一种附件叫做V2附件_第1张图片
还有我们传统的、Notes自带的Doc Library库:
有一种附件叫做V2附件_第2张图片
又或者你自己开发的某些Notes应用,进行文字和附件混排,如下图:
有一种附件叫做V2附件_第3张图片
上面无一例外验证了,Notes中上传的附件都会对应到某个富文本字段中,可以和富文本字段中的文字或其他对象(如图片、表格)等进行混排。

那么,问题来了,有没有可能Notes文档中没有富文本域,然后也有附件?

其实,最早1991年发布的Notes V2版本中,就是这么做的:文档中没有富文本字段,但依旧可以存附件,默认地存储在文档的最底下位置,和文档内容使用一条细黑的线条进行分割,如下图:
有一种附件叫做V2附件_第4张图片
因此,这种附件称之为V2附件。

当然,如果你的Notes表单也发布到Web上使用,而用户通过Web页面中的上传按钮,上传的附件,也会这么存储。

因此,这种附件有时候也称之为Web样式附件。

我们这里简单起见,都称之为V2附件。

你收到的外部邮件,附件也经常会显示为v2附件。
有一种附件叫做V2附件_第5张图片
所以,普遍有一种需求,要把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是无敌的!

今天就介绍到这里吧。更多文章请关注微信公众号:协作者

你可能感兴趣的:(Domino,Notes,V2附件)