我拦截了一个richtextbox的paste事件,以便在粘贴之前处理内容。如果它包含表或图像等。我需要做一些自定义的东西。如果复制的选择来自Word 2010并且由混合内容组成(例如,文本和表格/图像) Word以多种格式将内容放置在剪贴板上。其中包括超文本标记语言和实时文本格式,但我更喜欢使用WordML。我使用ClipSpy检查了剪贴板上实际放置了哪些格式和数据,而“嵌入源”格式似乎就是包含WordML的格式。我认为这可以作为一个包打开:
var stream = Clipboard.GetData("Embed Source") as MemoryStream;
var package = Package.Open(stream);它抛出了一个EndOfStreamException,我想它可能是被其他东西包裹起来的。我可以将流写入磁盘,并使用7-zip打开它,然后查看内容是否符合预期。所以基本上有两个问题:“嵌入源”是获得WordML的正确DataObject吗?如果是,我该如何反序列化它呢?
发布于 2013-07-03 00:10:51
将流保存到磁盘并与适当的docx进行二进制比较后,我发现它实际上包装在一个复合文档文件中:http://www.openoffice.org/sc/compdocfileformat.pdf。我用谷歌搜索了前几个字节
D0 CF 11 E0 A1 B1 1A E1它是CDF格式的标识符。
可以使用OpenMCDF从复合文件中提取包。
https://stackoverflow.com/questions/17406873
复制相似问题