如何使用lotus脚本解密在dxl中导出的富文本数据?

时间:2014-07-05 12:24:32

标签: encryption lotus-notes lotus-domino

我使用lotus脚本代码导出dxl文件中的项目。这是代码。

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim filename As String
Dim stream As NotesStream
Dim exporter As NotesDXLExporter
Set db = session.Currentdatabase
set dc = db.UnprocessedDocuments
filename = "c:/temp/exportDocs.dxl"
set stream = session.createStream()
If stream.Open(filename) Then
    Call stream.Truncate()
    set exporter = session.CreateDxlExporter()
    exporter.Richtextoption = 1
    exporter.MIMEOption = 0 
    Call stream.WriteText(exporter.Export(dc))
End if

End Sub

导出数据后

我正在获取此类型的项目正文

gv9aAAEAAAAAAAAA ..........加密数据。

我已将此缓冲区解码为base64并且我正在获取我的数据。但是我在base64解码后得到了一些标题。 base64解码后的头缓冲区的起始签名是0x5AFF82。任何人都可以告诉我如何解密它。?

1 个答案:

答案 0 :(得分:1)

因为该字段是富文本,"数据"不只是文本,还包括格式,可能是图片,表格,超链接等。听起来你想要只提取文本。

为什么你觉得你需要用DXL做这件事? NotesRichTextItem类有一个Text属性,它只会提取文本,这就是你所说的所需。即使出于某些其他原因需要DXL,您也可以通过这种方式获取文本,并使用仅包含文本的CDATA替换或扩充DXL中的富文本内容。

如果出于某种原因,DXL是您流程的重要组成部分: 富文本由" CD Records"每个包括一个标题后跟一些数据。所有文本都在"文本运行" CD记录,但还有很多其他类型。 CD记录的标题信息是标准化的,因此您不需要能够识别一个以跳过所有不包含文本的记录。因此,编写代码来扫描base64数据并仅提取包含文本的数据并不困难。但是,文本是LMBCS编码的,所以如果它不是全部在ASCII范围内,你需要做一些小的解码。 C API指南描述了CD格式。