c# - 将 PowerPoint 中的对象粘贴到 C# 应用程序中
问题描述
我们正在开发一个用于绘制形状、写入文本和粘贴图像的 .NET WPF 应用程序。我们最近添加了使用System.Windows.Forms.Clipboard
和getImage()
方法从 Windows 剪贴板粘贴图像的功能。
我们需要实现从 Microsoft PowerPoint 粘贴对象的功能。在 PowerPoint 页面中选择多个对象并进行复制时 - PowerPoint 会生成一个包含所有选定对象的图像。我们想要实现,以便从 PowerPoint 粘贴,我们可以从剪贴板中读取对象列表并将它们作为单独的对象粘贴。这应该是可能的,因为 PowerPoint 以多种方式将对象存储在剪贴板中 - 可以通过从 PowerPoint 复制多个对象并粘贴到 Word 中来验证,对象将单独粘贴。我们想在我们的应用程序中做同样的事情。
当我在 powerpoint 中复制一些对象时,Clipboard.GetDataObject().GetFormats();
我会得到一个存储在剪贴板中的数据格式列表。该列表如下所示:
- “首选 DropEffect”
- “InShellDragLoop”
- “对象描述符”
- “PowerPoint 12.0 内部主题”
- 《PowerPoint 12.0 内部配色方案》
- “PowerPoint 12.0 内部形状”
- “艺术::GVML 剪辑格式”
- “PNG”
- “JFIF”
- “GIF”
- “系统.绘图.位图”
- “位图”
- “增强的元文件”
- “元文件图片”
- “首选 DropEffect”
当我Clipboard.GetData(string format)
使用这些格式中的任何一种时,我会返回一个System.IO.MemoryStream
. 我不知道如何将它读入一个对象或对象列表,或者我应该如何处理它。
我还没有找到关于“PowerPoint 12.0 Internal Shapes”或任何其他看起来很有趣的格式的文档,现在知道如何在我们的应用程序代码中阅读和解析它们。
有没有人设法以“Office 方式”从 Office 应用程序中实现粘贴,即维护单个对象?尝试读取和解析剪贴板中的对象的最佳方法是什么?
亲切的问候, 迪夫
解决方案
推荐阅读
- python - 在 Scipy 中使用最小二乘法最小化时,如何修复“在...中遇到溢出”类型的各种 RuntimeWarnings?
- java - 用 jsonpath 替换 json 值
- python-3.x - 查询函数不适用于列名中的空格和括号
- python - Python/tkinter:添加一个条目小部件会隐藏我的画布项目
- cypress - 使用 cypress 检查测试类星体 q-checkbox
- python - 用户没有存储桶的 storage.objects.list 访问权限
- android - 语言更改后如何应用更改?
- html - 如何将标签的位置始终设置在输入垂直对齐的中间
- xamarin.forms - 在 AppCenter Android 手机在测试之间未清除
- r - 将列表名称传播到其内部向量的任何有效方法?