关于js读取rtf域的问题

一、基础知识:

1、常用ASCII码知识:

chr(9)、chr(10)、chr(13)、chr(32)、chr(34)
所有关于 ASCII码的表格:[url]http://www.asciitable.com/

chr(13) 是一个回车
Chr(10) 是个换行符
chr(32) 是一个空格符
9/34 是tab,未确定?

2、lotus notes中的rtf域

GetFormattedText(tabstrip, lineLength% )

eg:GetFormattedText(false,0),对rtf域值中的tab不进行处理,并且默认80个字符换行。

我们常用如下代码的方式来读取rtf域的值

Dim doc As NotesDocument
Dim rtitem As Variant
Dim plainText As String
Dim fileNum As Integer
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  plainText = rtitem.GetFormattedText( False, 0 )
End If

二、遇到的问题

今天在读取rtf域的值,并通过js代码读取到excel中的时候报错:“未结束的字符串常量”。

相关代理中的代码如下:

Print |<script language="Javascript">|
    Print |alert("|+doc.rtfDecription+|");|
    Print |</script>|

其中rtfDecription 为rtf域。

当此域中的值为简单的文本(eg,123,dsa)时,不存在这种问题。当域值包含换行等字符的时候,就会报错“未结束的字符串常量”。

三、处理办法

以下示例代码针对相关字符(回车和换行)进行处理。

Sub Initialize
    On Error Goto errHandler
    Dim s As NotesSession
    Dim doc As NotesDocument
    Set s = New NotesSession
    Set doc = s.DocumentContext
    Dim rtitem As Variant
    Dim plainText As String
    Dim vTextArea As Variant
    Set rtitem=doc.GetFirstItem("wahaha")
    If ( rtitem.Type = RICHTEXT ) Then
        plainText = rtitem.GetFormattedText( False, 0 )
    End If
    Dim strTemp As String
    If (Instr(plainText,Chr(13))>0) Then
        vTextArea = Split(plainText,Chr(13))
        strTemp =""
        strTemp = Join(vTextArea," ")
    End If       
    If (Instr(strTemp,Chr(10))>0) Then
        vTextArea = Split(strTemp,Chr(10))
        strTemp =""
        strTemp = Join(vTextArea," ")
    End If       
    'Method 2
    'vTextArea = Evaluate(|@ReplaceSubstring(@Text(wahaha);@NewLine;" ")|,doc)
    'Msgbox vTextArea(0)
    Print |<script language="Javascript">|
    Print |alert("|+strTemp+|");|
    Print |</script>|
    Exit Sub
errHandler:
    Msgbox Error & Error$ & Cstr(Erl)
    Exit Sub
End Sub

输入值:abc

def

afs

输出值:abc def afs

四、总结

前台代码(js代码)和后台代码(LotusScript、java)尽量分开写。

原文地址:https://www.cnblogs.com/hannover/p/2511419.html