gpt4 book ai didi

rtf - 验证富文本结构 RTF

转载 作者:行者123 更新时间:2023-12-04 16:11:13 28 4
gpt4 key购买 nike

MS Exchange/Outlook 消息使用 MAPI 存储数据。一个常见的 MAPI 属性包含消息正文的富文本版本(0x1009、PR_RTF_COMPRESSED、PidTagRtfCompressed)。如果富文本字符串具有无效结构,则 Outlook 2003 及更早版本将无法显示任何正文内容。

例如,这个 RTF 代码省略了一个结束的“}”。

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par

正确的版本是
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par
}

是否有可用于测试 RTF 代码是否有效的 .NET 方法或库?如果没有,我对 C++ 和 Java 或 COM 库持开放态度。如果没有,是否有应用程序报告 RTF 字符串中的违规行为?

理想的解决方案是报告包含不规则的行号。一个适当的解决方案将报告整个 RTF 是否有效且格式良好。

此问题在 MAPI 之外是相关的。例如,如果将上面指定的无效 RTF 字符串写入 .RTF 文件,它会在 WordPad 5.1 中正确打开,但 Word 2007 会报告错误并请求我修复该文件。

一个建议是我将 RTF 流式传输到富文本框中。我试过这个代码:
private void button1_Click(object sender, EventArgs e)
{
string aaa = richTextBox1.Rtf;
richTextBox1.Rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 asdfasdf\par}";
richTextBox1.Refresh();
}

无论richTextBox1.Rtf 是否以“}”结尾,富文本框将其显示为它的内容:
自卫队

当我省略最后一个“}”时,我正在寻找的解决方案会报告错误。

最佳答案

为什么不将 RTF 加载到隐藏的 RTF 控件中,然后将其流式传输出去?
究竟什么会设置无效的 RTF?我不认为 Outlook 会这样做。

关于rtf - 验证富文本结构 RTF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12681320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com