将PowerPoint中的对象粘贴到C#应用程序中

时间:2018-12-14 14:56:39

标签: c# .net ms-office powerpoint clipboard

我们正在开发.NET WPF应用程序,该应用程序用于绘制形状,编写文本和粘贴图像。我们最近添加了使用System.Windows.Forms.ClipboardgetImage()方法从Windows剪贴板粘贴图像的功能。

我们需要实现从Microsoft PowerPoint中粘贴对象的功能。在PowerPoint页面中选择多个对象并进行复制时-PowerPoint会生成包含所有选定对象的图像。我们想要实现,以便从PowerPoint中粘贴,我们可以从剪贴板中读取对象列表并将其作为单个对象粘贴。这应该是可能的,因为PowerPoint以几种方式将对象存储在剪贴板中-可以通过从PowerPoint复制许多对象并将其粘贴到Word中进行验证,然后将对象分别粘贴。我们想在我们的应用程序中做同样的事情。

当我在Powerpoint中复制许多对象时,然后Clipboard.GetDataObject().GetFormats();我得到存储在剪贴板中的数据格式列表。该列表如下所示:

  • “首选DropEffect”
  • “ InShellDragLoop”
  • “对象描述符”
  • “ PowerPoint 12.0内部主题”
  • “ PowerPoint 12.0内部配色方案”
  • “ PowerPoint 12.0内部形状”
  • “ Art :: GVML ClipFormat”
  • “ PNG”
  • “ JFIF”
  • “ GIF”
  • “ System.Drawing.Bitmap”
  • “位图”
  • “增强型图元文件”
  • “ MetaFilePict”
  • “首选DropEffect”

当我使用上述任何一种格式进行Clipboard.GetData(string format)时,我都会得到一个System.IO.MemoryStream。我不知道如何将其读入一个对象或对象列表中,或者如何处理。

我找不到关于“ PowerPoint 12.0内部形状”的文档,也找不到任何其他有趣的格式,并且现在知道如何阅读它们并在我们的应用程序代码中解析它们。

有没有人设法通过“ Office-way”中的Office应用程序实现粘贴,即维护单个对象?我尝试读取和解析剪贴板中对象的最佳方法是什么?

亲切的问候, div

0 个答案:

没有答案