在C#中我手动创建RTF字符串。它们稍后通过Microsoft Lync SDK作为持久聊天消息发送。在对客户端进行显示之前,我无法对Lync服务器如何处理这些消息进行大量控制或深入了解。可能在他们的黑匣子里发生了一些事情,但我试图掩盖我所有的基础。
我正在尝试创建一个在其前面有一些文本的表。理想情况下,它可能看起来像这样(我不会让代表发布三个图像所以我只是写了它在HTML中的样子):
table, td {
border: 1px solid black;
}
td {
padding: 15px;
}

text
<table>
<tr>
<td>c1</td>
<td>c2</td>
</tr>
</table>
&#13;
但是,如果我在表格之前有文本,则第一个单元格始终为空。使用以下代码:
string message = @"{\rtf1\ansi\deff0{text}\trowd{c1}\intbl\cell{c2}\intbl\cell\row}";
我会在客户端获得此结果:
Undesirable Result - First Cell Empty
如果我只是在开头取出文本,表格将根据需要显示。代码:
string message = @"{\rtf1\ansi\deff0\trowd{c1}\intbl\cell{c2}\intbl\cell\row}";
客户结果:
我尝试了上述代码的许多变体。我有一段时间通过互联网搜索这个问题。我也承认我是RTF的新手。不幸的是,Persistent Chat仅支持仅支持纯文本或RTF的Lync SDK。
如果有人能提供见解或指示我在哪里寻找这种行为的解释,我将不胜感激。如果需要更多信息,请告诉我。谢谢。
答案 0 :(得分:0)
在写字板中查看示例RTF会显示相同的效果,因此它不是特定于Lync的。从您的示例开始,我在写字板中编辑了文本以替换丢失的单元格并保存它,以便我可以看到RTF如何更改。主要区别似乎是在文本和表格之间插入\par
。
试试这个:
string message = @"{\rtf1\ansi\deff0{text}\par\trowd{c1}\intbl\cell{c2}\intbl\cell\row}";