2014-07-05 24 views
0

我正在使用蓮花腳本代碼導出dxl文件中的項目。這裏是代碼。如何使用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 

結束子

數據後是exported.i正在逐漸項的身體在這種類型的

gv9aAAEAAAAAAAAA ..........加密數據。

我已將此緩衝區解碼爲base64,並且正在獲取我的數據。但是在base64解碼之後,我在數據中得到了一些標題。 base64解碼之後的頭緩衝區的起始簽名是0x5AFF82。任何人都可以告訴我如何解密它?

+0

爲什麼不使用'exporter.Richtextoption = 0'?它不會將RichText數據轉換爲base64。 –

+0

@Knut:我需要通過解析dxl來獲得正文。如果我使用exporter.Richtextoption = 0,那麼我將很難解析richtext數據,因爲它包含很多格式標記。我只需要身體的文本而不是其格式和所有.. – user3215062

+0

'exporter.Richtextoption = 1'也應該包含所有格式標籤。我會在Notes中編寫一個代理,將RichText的文本部分複製到一個新的Text項目中,然後讀取它。公式代理可能看起來像這樣:'FIELD BodyText:= @Abstract([TEXTONLY]; 64000;「」;「Body」)' –

回答

1

由於該字段是富文本,「數據」不僅僅是文本,還包括格式,可能包括圖片,表格,超鏈接等等。這聽起來像你想提取文本。

爲什麼你覺得你需要用DXL來做到這一點? NotesRichTextItem類具有一個Text屬性,該屬性將僅提取文本,這正是您似乎需要的內容。即使由於其他原因需要DXL,也可以通過這種方式獲取文本,並用僅包含文本的CDATA替換或增加DXL中的富文本內容。

如果由於某種原因,DXL是你的過程中必不可少的一部分: 豐富的文本是由「CD唱片」,每個包括頭,隨後的一些數據。所有文本都在「文本運行」CD記錄中,但還有很多其他類型。 CD唱片的標題信息是標準化的,所以你不需要能夠識別一個跳過所有不包含文本的唱片。因此,編寫代碼來掃描base64數據並提取出包含文本的代碼並不困難。但是,文本是LMBCS編碼的,所以如果不是全部位於ASCII範圍內,您需要進行一些解碼操作。 C API指南介紹了CD格式。

相關問題