NotesDocument.save()导致丢失富文本格式

时间:2015-06-13 09:43:15

标签: lotus-domino lotusscript

我在lotusscript代理中有以下代码,用于从NotesDocuments中删除附件。但NotesDocument.save()会导致丢失富文本格式(字体,颜色)。有没有办法保留格式?

Sub removeAttachments_v2(doc As NotesDocument)
    Dim session As NotesSession
    Dim rtitem As Variant
    Dim filename As String
    Dim ans As Variant

    Set session = New NotesSession
    Dim richstyle As NotesRichTextStyle
    Set richstyle = session.CreateRichTextStyle
    richstyle.NotesColor = COLOR_BLUE

    If doc.HasEmbedded Then
        Set rtitem = doc.getfirstitem("Body")
        If (rtitem.type = RICHTEXT) Then
            ForAll object In rtitem.EmbeddedObjects
                If (object.Type = EMBED_ATTACHMENT) Then
                    filename = object.source
                    Call object.remove
                    Call rtitem.AddNewLine( 2 )
                    Call rtitem.AppendStyle(richstyle)
                    Call rtitem.AppendText( "Attachemnt removed: " & filename )
                    Call doc.Save( True, True , True )
                End If
            End ForAll
        End If
    End If
End sub

Edit1:初始化功能

Sub Initialize
    Dim db As New NotesDatabase("","")
    Dim col As NotesDocumentCollection
    Dim doc As NotesDocument

    Call db.Open("", "C:\this\is\db\dir\test.nsf")
    Set col = db.Alldocuments

    Set doc = col.Getfirstdocument()
    While Not ( doc Is Nothing )
        Call RemoveAttachments_v2(doc)
        Call doc.Save(False, False, False)
        Set doc = col.GetNextDocument( doc )
    Wend
End Sub

1 个答案:

答案 0 :(得分:0)

尽管事实上,您为每个附件保存文档但我找不到任何理由,为什么会发生这种情况。我刚刚在代理中复制了您的代码,并根据需要删除了附件,并将文本附加为蓝色...

没有格式化丢失......

错误必须在代码中的其他位置,可能在调用函数中。

  

OLD ANSWER(由于自己的测试错误,只是保留在历史记录中):

     

这里的问题很可能是:你将rtitem定义为Variant。和   getfirstitem为您提供NotesItem而不是NotesRichtextItem,所以   保存时,它会转换为"纯文本"项目。

     

很可能你使用的是Variant而不是NotesRichtextItem,因为   有Mime- mails将变量定义为NotesRichtextItem   将导致"类型不匹配"或类似的错误。只要你不这样做   什么都写回来这没关系。

     

由于Mime Mails需要完成不同的处理以实现您的目标,   你应该首先使用。修复纯NotesRichtextItems的代码   正确的类型,然后编写另一个代码分支来处理Mime-   项目