从剪贴板中获取Word ML

我正在拦截richtextbox的粘贴事件,以便在粘贴之前处理内容。 如果它包含表格或图像等我需要做一些自定义的东西。 如果复制的选择来自Word 2010并且由混合内容(例如,文本和表格/图像)组成,则Word会以多种格式将内容放置在剪贴板上。 这些包括HTML和RTF,但我宁愿使用WordML。 我使用ClipSpy检查实际放在剪贴板上的格式和数据,“嵌入源”格式似乎是包含WordML的格式。 我认为这可以作为一个包打开:

var stream = Clipboard.GetData("Embed Source") as MemoryStream; var package = Package.Open(stream); 

它抛出一个EndOfStreamException,我认为migth被包装在其他东西中。 我可以将流写入磁盘并使用7-zip打开它,看看内容是否符合预期。 所以基本上有两个问题:“嵌入源代码”是否是正确的DataObject来获取WordML? 如果是,我该如何反序列化呢?

将流保存到磁盘并与正确的docx进行二进制比较后,我发现它实际上包含在一个复合文档文件中: http : //www.openoffice.org/sc/compdocfileformat.pdf 。 我用谷歌搜索了前几个字节

 D0 CF 11 E0 A1 B1 1A E1 

这是CDF格式的标识符。

可以使用OpenMCDF从Compound文件中提取包。