3

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

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

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

4

1 回答 1

1

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

D0 CF 11 E0 A1 B1 1A E1

这是CDF格式的标识符。

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

于 2013-07-02T16:10:51.110 回答